Hello.
I have a map

``map<int, vector<int> >``

and I want to find which one of the vectors has the most elements.
Is there a built in function that does that or do I have to write my one code.

Cheers
Costantinos

All 7 Replies

you could try std::max_element in <algorithm>

you could try std::max_element in <algorithm>

Thanx.
My question was a bit different since I was trying to find the vector with the most elements, not the biggest element.
I have written a small function for doing so

Cheers
Constantinos

std::max_element takes an optional binary predicate as its third parameter. You could use it on your container holding the vectors (the map) and define a predicate that compares the size of two vectors. However, I'm not sure max_element would have been the best solution in this case, anyways.

commented: Nice--[Grunt] +1

Maybe you're trying to do something like this:

``````#include <iostream>
#include <map>
#include <vector>
using namespace std;

int main ()
{
map < int, vector<int> > map_cont;
vector <int> v1;
vector <int> v2;
vector <int> v3;
int i;
for (i = 0; i < 10; i++)
{
v1.push_back(i);
}
for (i = 0; i < 20; i++)
{
v2.push_back(i);
}
for (i = 0; i < 5; i++)
{
v3.push_back(i);
}
map_cont[1] = v1;
map_cont[2] = v2;
map_cont[3] = v3;
map < int, vector<int> > :: iterator it_trav, it_max;

it_max = map_cont.begin();
for (it_trav = map_cont.begin(); it_trav != map_cont.end(); ++it_trav)
{
if ( it_max->second.size() < it_trav->second.size() )
{
it_max = it_trav;
}
}

cout << "Element with vector of max. no. of elements:" << it_max->second.size();
cout << " and it's map[" << it_max->first << "]!" << endl;
}``````

This code is just for demonstration. I hope it helps!

Micko

commented: Nice--[Grunt] +1

Couldn't you just use the .size() parameter to find the vector with the largest number of elements?

I understood he's trying to find element in container whose vector has max number of elements.

I understood he's trying to find element in container whose vector has max number of elements.

Yeah you're right, I missed that. I was just skimming through this thread. You were using the .size() call anyway.

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.