嗨我從下面的代碼得到編譯錯誤。我無法弄清楚:在標準::清單中找到
g++ stl_list_1.cc
stl_list_1.cc: In function \u2018int main()\u2019:
stl_list_1.cc:16: error: \u2018struct std::_List_iterator<int>\u2019 has no member named \u2018clist\u2019
stl_list_1.cc:19: error: \u2018struct std::_List_iterator<int>\u2019 has no member named \u2018clist\u2019
stl_list_1.cc:25: error: no match for call to \u2018(std::list<std::_List_const_iterator<int>, std::allocator<std::_List_const_iterator<int> > >) (int&)\u2019
代碼:
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
main()
{
std::list<int> clist;
for (int i =0; i<10; i++)
{
clist.push_back(i);
}
std::list<std::list<int>::const_iterator> list1;
std::list<int>::iterator itr1;
itr1 = std::find(clist.begin().clist.end(),1);
std::list<int>::iterator itr2 ;
itr2 = std::find(clist.begin().clist.end(),7);
list1.push_back(itr1);
list1.push_back(itr2);
for(int j =0; j< list1.size(); j++)
{
int k = *list1[j];
std::cout << "cvalue " << k <<std::endl;
j++;
}
}
感謝 魯奇
儘管最後的提前部分是正確的,但在循環結尾爲O(N^2)時,效率會非常低。 更好地使用迭代器來遍歷列表而不是索引 – jcoder 2012-08-07 14:40:59
@JohnB你是對的,我看到問題是孤立的。最好只使用一個迭代器,我會解決這個問題。謝謝。 – mfontanini 2012-08-07 14:43:23