vector的基本操作
v.empty() | 如果V中不含有任何元素,返回真;否则返回假 |
v.size() | 返回v中元素的个数 |
v.push_back | 向vector尾端中添加元素 |
v[n] | 返回V中第n个位置元素的引用 |
v1=v2 | 用v2中元素的拷贝替换v1中的元素 |
v1={a,b,c,d} | 用列表中的元素拷贝替换v1中的元素 |
v1==v2 | 比较1 |
v1!=v2 | 比较2 |
<,>=,>,>= | 比较3 |
vector编程
#include <iostream> #include <vector> using namespace std; int main() { //vector初始化方法 vector<int> v1; //声明空vector对象 vector<int> v2(10, 0);//10个0 vector<int> v3{ 0, 1, 2, 3, 4, 5, 6 }; vector<int> v4; //向vector中添加对象 for (int i = 0; i<10; ++i) { v1.push_back(i); } //检查vector是否为空对象 if (v1.empty()) { cout << "v1 is empty!" << endl; } else { cout << "v1 has " << v1.size() << " elements" << endl;//使用size成员函数返回vector中元素的个数 } v4 = v3;//vector可以进行赋值操作 if (v3 == v4)//vector的关系运算 { cout << "v3==v4" << endl; } //vector对象的输出 for (auto i : v1)//表达方法1 cout << i << " "; cout << endl; for (vector<int>::const_iterator beg = v1.begin(); beg != v1.end(); ++beg)//方法2 { cout << *beg <<" "; } cout << endl; cout << "v2 value:" << endl; for (auto i : v2)//表达方法1 cout << i << " "; cout << endl; cout << "v3value:" << endl; for (auto i : v3)//表达方法1 cout << i << " "; cout << endl; cout << "v4 value:" << endl; for (auto i : v4)//表达方法1 cout << i << " "; cout << endl; return 0; }
vector下标索引错误
vector对象(以及string对象)的下标运算符可用于访问已存在的元素,而且不能用于添加元素
错误实例:
vector<int> ivec;//空vector对象 for (decltype(ivec.size()) ix = 0; ix != 10; ++ix) ivec[ix] = ix;//严重错误
编译器不会报错,但是在调试过程中出现严重错误,如下:
缓冲区泄露;其次给vector对象赋值,最好选用范围for语句,访问不存在的元素会产生缓冲区泄露,添加元素可以采用push_back成员函数;