顺序容器vector:
初始化: vector<int> vecInt(10,5)和vector<int> vecInt{10,5};
容器访问:
1、使用迭代器访问和修改:*iter返回迭代器iter所指向元素的引用,迭代器的修改可改变原容器内元素的值
//使用auto + 迭代器
vector<Sales_item> salesAcct; // Sales_item定义参加c++ primer,成员均修改为public
auto iter = salesAcct.begin();
for (iter; iter != salesAcct.end(); iter++) {
(*iter).units_sold = 11;
cout<<*iter<<endl;
}
2、使用for( auto i:vecInt):对i赋值改变不能改变vecInt中的值,要改变值需要使用for( auto &i:vecInt)
//使用auto + :
index = 0;
for(auto i:salesAcct) { // 这样并未改写salesAcct中元素的值
i.units_sold = 10; // c++ primer 83页:每次迭代,str的下一个字符被拷贝给c
cout<<salesAcct[index]<<endl;
index++;
}
index = 0;
for(auto &i:salesAcct) { // 这样并可以改写salesAcct中元素的值
i.units_sold = 10;
cout<<salesAcct[index]<<endl;
index++;
}
3、删除迭代器元素需要特殊处理
for (auto iter = salesAcct.begin(); iter != salesAcct.end(); ) {
if (iter->units_slod != 0) {
iter = salesAcct.erase(iter);//erase返回被删除元素的下一个元素的迭代器
} else {
iter++;
}
}