Hi,

How to do arithmetic and relational operations using Standard Template Library.(STLs).
Could any one please guide me regarding this. I am new to Standard Template Library.

Dani AI

Generated

A concise, practical note on using STL for arithmetic and relational work that complements 's reference and the namespace advice from .

The STL provides generic algorithms and ready-made function objects to perform arithmetic and comparisons over ranges; the language defines the operators, and the library helps apply them to containers. Key headers are #include <numeric>, #include <algorithm>, and #include <functional>. Typical patterns:

  • reductions across a range: std::accumulate, std::inner_product, std::partial_sum;
  • element-wise arithmetic: std::transform with std::plus, std::minus, etc.;
  • relational checks: std::count_if, std::find_if, and sorted-range tools such as std::binary_search, std::lower_bound.

Example: sum a vector and add two vectors element-wise.

#include <vector>
#include <numeric>
#include <algorithm>
#include <functional>

std::vector<int> data = {10, 20, 30};
int sum = std::accumulate(data.begin(), data.end(), 0);

std::vector<int> A = {1,2,3}, B = {4,5,6}, C(A.size());
std::transform(A.begin(), A.end(), B.begin(), C.begin(), std::plus<int>());

Example: relational operations and sorting.

#include <algorithm>

int count_gt_15 = std::count_if(data.begin(), data.end(),
                                [](int v){ return v > 15; });

std::sort(data.begin(), data.end(), std::greater<int>());
bool present = std::binary_search(data.begin(), data.end(), 20);

Practical tips and cautions:

  • For custom types provide operator</operator== or pass a comparator to algorithms. std::binary_search and the bound functions require a sorted range.
  • Prefer lambdas (or standard functors) for short predicates; prefer std:: qualification in headers to avoid pollution—as and noted, using namespace std is optional but should be avoided in header files. Limited using declarations or std:: qualification in implementation files keeps intent clear and prevents name collisions.

Workflow: pick the algorithm that expresses the desired operation, choose a functor or lambda, include the proper header, and test on small data first.

Recommended Answers

All 4 Replies

Here's a link for STL with example codes

just scroll down for arithmetic and relational operations.

why we have to use following code in STL programs. why it is needed.

use namespace std;

why it is needed.

It's not.

You're just telling the compiler that you want to use all commands from the std namespace. If you're only planning to use the command 'cout' from std-namespace, you could write: using std::cout; ór you could put the std:: in front of the command you're using from the std-namespace:

std::string str = "something";
std::cout << str << std::endl;

Now there's no need to say: using namespace std

why we have to use following code in STL programs. why it is needed.

use namespace std;

It is not obligatory, but if you omit it, then you have to explicitly specify the namespace whenever you access/use something within a namespace e.g. [B]std[/B]::string mystring = "test"; .

see

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.