I have a question. Is there any generic algorithm or solution to access the keys or values of a map? I frequently face to such problem and I usually write a function to copy the keys/values of a map into a container let say a vector.
> I have a question. Is there any generic algorithm or solution to > access the keys or values > of a map? I frequently face to such problem and I usually write a > function to copy > the keys/values of a map into a container let say a vector.
Although this isn't exactly ideal, and would be a nice place to use a lambda function in C++0x too.
There's a few annoying things about this though, the function take_first has to live inside the anonymous namespace because it's not legal to write the following, which given the absence of lambda functions would be cleaner in my view:
I also never got type deduction for the function pointer argument to std::transform to work, which I kind of expected it would, although that's not exactly a problem.
> > I have a question. Is there any generic algorithm or solution to > > access the keys or values > > of a map? I frequently face to such problem and I usually write a > > function to copy > > the keys/values of a map into a container let say a vector.
> Although this isn't exactly ideal, and would be a nice place to use a > lambda function in C++0x too.
> There's a few annoying things about this though, the function take_first > has to live inside the anonymous namespace because it's not legal to > write the following, which given the absence of lambda functions would > be cleaner in my view:
> I also never got type deduction for the function pointer argument to > std::transform to work, which I kind of expected it would, although > that's not exactly a problem.
> Alan
Hi Alan
Thank you for your code. It is really good. It is better than my code and I definitely will use it. So, there is no pre-built generic algorithm for doing this.
On Nov 4, 4:44 am, Saeed Amrollahi <amrollahi.sa...@gmail.com> wrote:
> Dear all
> I have a question. Is there any generic algorithm or solution to > access the keys or values > of a map? I frequently face to such problem and I usually write a > function to copy > the keys/values of a map into a container let say a vector.
> On Nov 4, 4:44 am, Saeed Amrollahi <amrollahi.sa...@gmail.com> wrote:
> > Dear all
> > I have a question. Is there any generic algorithm or solution to > > access the keys or values > > of a map? I frequently face to such problem and I usually write a > > function to copy > > the keys/values of a map into a container let say a vector.
On Nov 4, 1:44 am, Saeed Amrollahi <amrollahi.sa...@gmail.com> wrote:
> Dear all
> I have a question. Is there any generic algorithm or solution to > access the keys or values of a map? I frequently face to such > problem and I usually write a function to copy the keys/values > of a map into a container let say a vector.
> Many thanks, in advance, for your help.
What exactly do you want? You just want to access a map's current contents? Then iterate over the contents, like so:
for (map<int, int>::iterator x = someMap.begin(); x != someMap.end(); + +x) { int const& key = x->first; int& value = x->second; //do whatever with this (key, value) pair
}
Do you want to create a new container which holds all of the keys? Or holds all of the values? Then iterate over the contents and build the new container, like so:
map<int, int> someMap; vector<int> listOfKeys; for (map<int, int>::iterator x = someMap.begin(); x != someMap.end(); + +x) listOfKeys.push_back(x->first);
I would not write a separate function for a two liner using very basic standard library stuff like this. Wrapping such basic usage for ease of use does not result in ease of use. It results in only obfuscation.
> There's a few annoying things about this though, the function take_first > has to live inside the anonymous namespace because it's not legal to > write the following, which given the absence of lambda functions would > be cleaner in my view: