【发布时间】:2012-09-03 17:26:57
【问题描述】:
我正在尝试从一组向量中打印出每个向量中的所有元素。构建失败,但错误发生在头文件中的某处,恐怕我根本不了解错误代码。任何帮助将不胜感激!这是错误:
error: invalid conversion from 'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >* const' to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*'
这是导致问题的代码。
multiset<vector < string > > setOfRules;
vector<string> testing,testing2;
testing.push_back("bar");
testing.push_back("foo");
testing2.push_back("foo2");
testing2.push_back("bar2");
setOfRules.insert(testing);
setOfRules.insert(testing2);
for (multiset< vector <string > >::iterator myIterator = setOfRules.begin();
myIterator!=setOfRules.end();
++myIterator)
{
for (vector< string >::iterator myOtherIterator = ( *myIterator ).begin();
myOtherIterator != ( *myIterator ).end();
++myOtherIterator)
{
cout << *myOtherIterator << " " ;
}
cout << endl;
}
【问题讨论】:
-
我没看到你在哪里添加了
testing和testing2到setOfRules。 -
同意。
setOfRules在这段代码中为空。 -
迭代
multiset需要您使用const_iterator。否则,您可能会尝试在迭代期间更改集合的“键”,这会破坏集合中的顺序。 -
所以我猜@GrimFandango 发现了这个问题,以及缺少向量的添加。来吧,回答吧。
-
修复了空多集问题。为指出这一点而欢呼。
标签: c++ vector iterator multiset