时间紧张,先记一笔,后续优化与完善。
引用头文件
#include <vector>
一、操作数据
主要有下列几种方法:
vector<int> vecSalary; //1.直接添加 vecSalary.push_back(2000); vecSalary.push_back(3000); //2.按位置添加 vecSalary.insert(vecSalary.begin(), 1000); vecSalary.insert(vecSalary.end(), 4000); //删除vector容器中的前三个元素 vecSalary.erase(vecSalary.begin(), vecSalary.begin() + 3); //清空数据 vecSalary.clear();
二、应用说明
1)容器中保存的是指针对象,这需要应用完毕后,释放这些指针所指向的对象
vector<Employee*> vecEmployee; //操作容器数据 ... //应用完后,释放指针对象 for (vector<Employee*>::iterator it = vecEmployee.begin(); it != vecEmployee.end(); ++it) { if (NULL != *it) { delete *it; } *it = NULL; }
2)应用迭代器删除容器中的数据元素需谨慎
vector.erase(pos) :vector删除位置为pos的值
此时为坚持容器内存连续性,vector前面的元素会主动向前移动一个位置,迭代器这时候实际指向的是被删除元素后的第一个元素。
中间跳过了一个元素,这就极可能形成遗漏某些元素的检查而致使删除不完全。
正确删除方法
for (vector<int>::iterator it = vecSalary.begin(); it != vecSalary.end();) { //遇到符合条件的删除 if (*it > 1000) { it = vecSalary.erase(it); } else { ++it; } }
附加 :C++0x中for_each()算法遍历
typedef vector<int> VEC_INT; void printInt(int &it) { if (it % 5 == 0) { cout<<it<<" "; } } int _tmain(int argc, _TCHAR* argv[]) { VEC_INT vecInt; int i = 1; for (int i = 1; i < 100; ++i) { vecInt.push_back(i); } for_each(vecInt.begin(),vecInt.end(), printInt); return 0; }
文章结束给大家分享下程序员的一些笑话语录: 自从有了Photoshop,我再也不相信照片了!(没有Photoshop的年代,胶片照片年代做假的也不少,那时候都相信假的!)