use*_*598 2 c++ iterator vector multiset
我试图从多个向量中打印出每个向量中的所有元素.构建失败但错误发生在头文件中的某个地方,恐怕我根本不理解错误代码.任何帮助将不胜感激!这是错误:
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> >*'
Run Code Online (Sandbox Code Playgroud)
以下是导致问题的代码.
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;
}
Run Code Online (Sandbox Code Playgroud)
C++ 11 Standard声称,对于值类型与键类型相同的关联容器,iterator和const_iterator都是常量迭代器.
实际上multiset<vector<string>>::iterator
是const_iterator
.与std::set
迭代器相同的技巧- 它们都是有效的.
这意味着vector<string>::iterator myOtherIterator = *myIterator.begin()
语句将失败,因为您尝试从const对象获取非const迭代器(由哪个给出).*myIterator
const
要修复你需要使用vector<string>::const_iterator
:
for(multiset<vector<string>>::const_iterator myIterator = setOfRules.begin();
myIterator != setOfRules.end(); ++myIterator)
{
for(vector<string>::const_iterator myOtherIterator = *myIterator.begin();
myOtherIterator != *myIterator.end(); ++myOtherIterator)
{
cout << *myOtherIterator << " ";
}
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
443 次 |
最近记录: |