我没有正确的语法。让我说我有这个......
#include <set>
...
struct foo{
int bar;
string test;
};
struct comp{
inline bool operator()(const foo& left,const foo& right){
return left.bar < right.bar;
}
};
int main(){
std::multiset<foo,comp> fooset;
std::multiset<foo,comp>::iterator it;
...//insert into fooset
for (it = fooset.begin(); it != fooset.end(); it++){
//how do i access int bar and string test of each element?
}
return 0;
}
如何访问for循环中每个元素的int bar和字符串测试?
谢谢!
答案 0 :(得分:2)
有一个很好的助记符规则,迭代器是指针的安全C ++抽象。
所以基本上你通过解除引用语法来访问元素:
(*it).bar = 0;
it->test = "";
答案 1 :(得分:2)
for (it = fooset.begin(); it != fooset.end(); it++)
{
foo const & f = *it; //const is needed if it is C++11
//use f, e.g
std:: cout << f.bar <<", " << f.test << std::endl;
}
在C ++ 11中,您可以这样做:
for(foo const & f : fooset)
{
//use f, e.g
std:: cout << f.bar <<", " << f.test << std::endl;
}