新手入门,关于顺序容器的有关问题
新手入门,关于顺序容器的问题不知道下面的代码为什么错误#include iostream#include list#include ve
新手入门,关于顺序容器的问题
不知道下面的代码为什么错误
#include <iostream>
#include <list>
#include <vector>
#include <string>
using namespace std;
int main() {
string words[] = {"stately", "plump", "buck"};
size_t word_size = sizeof(words) / sizeof(string);
list<string> words2(words, words+word_size);
for(list<string>::iterator iter = words2.begin(); iter != words2.end(); iter++)
cout << *iter << endl;
cout << "--------" << endl;
list<string>::iterator mid = words2.begin() + words2.size()/2;
//vector<string> vect(words2.begin(), mid);
//for(vector<string>::iterator iter = vect.begin(); iter != vect.end(); iter++)
//cout << *iter << endl;
return 0;
}
新手入门,关于顺序容器的问题 String Iterator
[解决办法]list<string>::iterator mid = words2.begin() + words2.size()/2;
----------------------------------------
list的迭代器只能自增自减,不能+ 数字
[解决办法]list<string>::iterator mid = std::next(words2.begin(), words2.size()/2); (需要c++11)
或者
list<string>::iterator mid = words2.begin();
std::advance(mid, words2.size()/2);
需要包含<iterator>
不管哪种,对于list的迭代器,内部实现实际上就是一个一个加过去的
[解决办法]list就没有提供迭代器+整数的运算,有++运算,可以一个一个++过去
[解决办法]list是链式结构,不支持+N的需求,也就是说它的迭代器不是随机迭代器。
[解决办法]楼上说的对,这只是顺序迭代器,不是随机迭代器