469,299 Members | 2,050 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,299 developers. It's quick & easy.

searching keys in std::map using map::upper_bound


Hi,

let's say I have a std::map<std::string,int> and I want to search the map
for all keys that start with "foo". The regexp equivalent is to search for
"foo*", or perhaps "^foo*".

At present I do this quick'n'dirty by appending a tilde (~) to the query
term, since I know it's last in the ascii table and my keys don't include
any special characters. So to find everything that starts with "foo" I
search the map from map::lower_bound("foo") to map::upper_bound("foo~").
See below for complete program that demonstrates this.

There must be a much smarter, cleaner, more portable and less ugly way to
do this. Any ideas?

Thanks,
Erik

Code:
#include <iostream>
#include <map>

using namespace std;

int main(int argc, char* argv[])
{

map<string, int> testmap;
testmap.insert( make_pair("fon", 1) );
testmap.insert( make_pair("foo", 2) );
testmap.insert( make_pair("foobar", 3) );
testmap.insert( make_pair("fool", 4) );
testmap.insert( make_pair("fop", 5) );

map<string, int>::iterator start_it = testmap.lower_bound("foo");
map<string, int>::iterator stop_it = testmap.upper_bound("foo~");

for( ; start_it != stop_it; ++start_it ) {
cerr<<(*start_it).first<<'\t'<<(*start_it).second< <endl;
}

return 0;
}
--
My Hotmail address is a spam magnet. If replying by email, use
erik dot arner at cgb dot ki dot se

Jul 22 '05 #1
0 1645

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by hivie | last post: by
2 posts views Thread by repairman2003 | last post: by
5 posts views Thread by Fred Zwarts | last post: by
3 posts views Thread by could.net | last post: by
1 post views Thread by benhoefer | last post: by
3 posts views Thread by Henrik Goldman | last post: by
12 posts views Thread by mohitanchlia | last post: by
reply views Thread by zhoujie | last post: by
reply views Thread by suresh191 | last post: by
reply views Thread by harlem98 | last post: by
1 post views Thread by Geralt96 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.