【发布时间】:2011-08-10 03:05:35
【问题描述】:
我有一段这样的代码:
set<string>::iterator it1;
set<string>::iterator it2;
pair<set<string>::iterator,bool> ret;
set<string> s;
ret = s.insert("bbbb1");
it1 = ret.first;
ret = s.insert("bbbb2");
it2 = ret.first;
map<set<string>::iterator, set<string>::iterator> m;
m.insert(make_pair(it1,it2));
但最后一行“m.insert(make_pair(it1,it2));”失败了。。
【问题讨论】:
-
使用迭代器作为映射键是一个糟糕的想法(因为任何随后失效的迭代器都可能导致未定义的行为)。不要这样做。 :-(
-
@Chris:
std::set的迭代器很少失效。 -
@James:是的,但如果项目从集合中移除,则与这些项目对应的迭代器将是。 :-)