|
1.特点 优点: 随机访问、动态改变自身大小、快速地在序列尾部插入和删除元素 缺点: 在除头尾其它位置插入和删除元素效率降低(因为要移动元素以容纳新元素或回收被删除的空间)
#i nclude <vector> using namespace std; 向量类模板 vector
2.声明 vector <数据类型> 对象名(大小, 初始值) 例: vector <int> iVector(100, 0); //大小为100,类型为int,初始所有值为0.
3.访问 通过指示器 iterator(相当于C++里的指针)来操作. 声明 vector <数据类型>::iterator 对象名 例: vector <int>::iterator iter; 4.访问 遍历: for (iter=iVector.begin(); iter<iVector.end(); iter++); //*iter即为向量iVector里各项的值 取随机值 iVector.at(下标); 5.插入元素(以下介绍都是vector类的成员函数) push_back(元素) //在尾部插入 例: iVector.push_back(3); insert(iterator指针, 元素) //随机插入, iterator用来标明操作的位置 例: vector <int>::iterator start; iVector.insert(start, 1); insert(iterator指针, 个数, 元素) //把元素的n份拷贝到向量中指针所指定的位置 例: vector <int>::iterator start; iVector.insert(start, 5, 1); insert(iterator指针, iterator指针开始, iterator指针结尾) //将操作的范围内的值插入到指定位置 例: vector <int>::iterator i, start, end; i =iVector.begin(); start=iVector.begin()+2; end =iVector.end()-3; iVector.insert(i, start, end);
6.删除元素(以下介绍都是vector类的成员函数) pop_back() //在尾部删除 例: iVector.push_back(); erase(iterator指针) //随机删除 erase(iterator指针开始, iterator指针结尾)//删除范围内的值
7.vector中的交换 swap函数 void swap(vector<T, Alloc>& x) { __STD::swap(start, x.start); __STD::swap(finish, x.finish); __STD::swap(end_of_storage, x.end_of_storage); } 是由于交换了 end_of_stroage的缘故 所以变小了
8. 如果vector的元素是指针,那么vector的删除不同于list,它不可以迭代期删除 struct tagRecorderPlan {};
std::vector<tagRecorderPlan*> m_plans; std::vector<tagRecorderPlan*>::iterator m_planiter;
tagRecorderPlan * pplan = 0; for (m_planiter = m_plans.begin(); m_planiter != m_plans.end(); m_planiter++) { pplan = *m_planiter; delete pplan; pplan = 0; }
m_plans.clear();
|
|