容器

顺序容器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++;
}
}





上一篇:删除有序数组中的重复项


下一篇:蚁群算法(ACO)解决TSP问题