fivemack: (Default)
[personal profile] fivemack
Suppose I have an object of some naturally-occurring reasonably fiddly C++ STL type: say

map<float,vector<map<string,pair<int,clipper::Coord_orth> > > > W;

and I want to iterate over it.

Is there any way that I can say something like typeof(W)::iterator, rather than having to write for loops whose initialiser is already wider than the screen?

for (map<float,vector<map<string,pair<int,clipper::Coord_orth> > > >::iterator Z = W.begin(); Z != W.end(); Z++)

Date: 2008-03-14 02:48 pm (UTC)
From: [identity profile] jojomojo.livejournal.com
A typedef is indeed the obvious solution. LLVM does this all the time, defining a typedef for the most commonly used iterator of a class in that class's definition and providing a method to return it, such that you can do things like this -

Module::iterator it = module->getFunctionList().begin();
while (it != module->getFunctionList().end())
{
process_function_header(it);
it++;
}

March 2024

S M T W T F S
     12
3456789
10111213141516
17181920212223
24 252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 01:12 am
Powered by Dreamwidth Studios