【问题标题】:How to declare a vector of llist of string and process it?如何声明字符串列表的向量并对其进行处理?
【发布时间】:2016-08-21 13:41:06
【问题描述】:

我是 C++ 新手。我尝试了以下方法,但出现错误请纠正我。

vector<list<string>> ques(size);  //initialization
cout<<ques[pos].front()<<endl;    //printing out the top element at pos
vector<list<string>>::iterator it;
for(it=ques[pos].begin();it!=ques[pos].end();it++) //traversing through the list at pos <getting error>          
{
                cout<<*it;           
}

error: no match for ‘operator=’ (operand types are ‘std::vector<std::list<std::basic_string<char> > >::iterator {aka __gnu_cxx::__normal_iterator<std::list<std::basic_string<char> >*, std::vector<std::list<std::basic_string<char> > > >}’ and ‘std::list<std::basic_string<char> >::iterator {aka std::_List_iterator<std::basic_string<char> >}’)|

【问题讨论】:

  • 请发布错误。
  • 你得到哪个错误?
  • 你是否希望每个人都猜出编译错误是什么,因为大部分代码甚至没有显示?
  • 这是 all 你的代码,还是你也有一些 #includes 和 main() 函数?
  • 错误:'operator=' 不匹配(操作数类型是 'std::vector<:list>> >::iterator {aka __gnu_cxx::__normal_iterator <:list> >*, std::vector<:list> > > >}' 和 'std::list<:basic_string char> >::iterator {aka std::_List_iterator<:basic_string> >}')|

标签: c++ string list vector stl


【解决方案1】:

您正在迭代 std::list&lt;std::string&gt;

这意味着你的迭代器应该是:

list<string>::iterator it;

而不是:

vector<list<string>>::iterator it;

这将用于迭代向量本身。

此外,使用现代 C++ 会更好,它可以让编译器自己解决这个问题:

for(auto it=ques[pos].begin(); it!=ques[pos].end(); it++)

甚至更好:

for (auto &value: ques[pos])
     cout << value;

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 2014-01-24
    • 2022-01-12
    • 2016-01-06
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多