array 不支持动态的新增删除操作
特点 大小固定 无法增加或移除元素改变其大小
vector 矢量 (顺序表) 是封装动态数组的顺序容器
// 缺点 头部,,中间 插入删除会引起元素的移动从而增加开销,影响执行效率.
int main()
{
/* 构造 */
vector<int>v1;//默认构造
vector<int>v2(5);//准备了5个元素的空间 放的是0 可以通过 v1[]下标赋值
vector<int>v3(5,666);//准备了5个元素的空间 放的是 666
vector<int>v4(v1);// v2里面全部是v1的元素
vector<int>v5(v1.begin(),v1.end());//迭代器赋值
vector<int>v6(v1.begin()+2, v1.end());//迭代器赋值
int xx[] = { 1,2,3,4,5 };
vector<int>v7(xx,xx+2); // 数组赋值
/* 赋值 */
v1.push_back(1); // 尾部增加
v1.pop_back();//尾部删除
v1[0] = 100;// 下标赋值
v1.assign(2, 888);// 里面只有两个元素..都是888
v1.assign(v3.begin(),v3.end());//迭代器赋值
int xx[] = { 1,2,3,4,5 };
v1.assign(xx,xx+3);// 数组的地址赋值
v1 = v2;// 赋值
/* 大小 */
cout << v1.size() << endl;//大小(元素的个数)
cout << v1.capacity() << endl;//容积/容量 (编译器自己分配空间)
v1.empty();// 判断是否为空 返回值是 boole
v1.resize(3);//从新调整大小或者空大时值是0
v1.resize(5,888);//扩大时指定新增的值
/* 存取 */
v1[1] = 10; //下标
v1.at(1) = 10;// 和下标类似
v1.front(); // 返回头部的值
v1.end(); // 返回尾部的值
/* 插入 返回值也是迭代器的位置 */
v1.insert(v1.begin(), 666);//开始的位置插入666
v1.insert(v1.begin()+2, 666);//第三个位置插入666
v1.insert(v1.begin(),2, 666);//开始的位置后插入666
v1.insert(v1.begin(),v2.begin(),v2.end());//
/* 删除 返回值也是迭代器的位置 */
v1.clear();//删除所以元素
v1.erase(v1.begin());
v1.erase(v1.begin(),v1.begin()+2);
}
/* 自己定义的vector */
//typedef struct star victor;
#define max_size 100
typedef struct { // 定义了一个vector
int* base;
int length;
int size;
}vector;
bool initvector(vector &v) { // vector的初始化
v.base= new int[max_size];
v.length = 0;
v.size = max_size;
}
bool addvoctor(vector& v,int x) { // 增加元素
v.base[v.length] = x;
v.length++;
return true;
}
标签:deque,begin,int,v1,xx,vector,array,赋值 From: https://www.cnblogs.com/asd12310/p/16747114.html