本文简单介绍vector容器的 构造方法、赋值、插入和删除等
目录
一、vector构造函数
vector数据结构和数组非常相似,也称为单端数组 ,不同之处在于数组是静态空间,而vector可以动态扩展
函数原型
vector<T> v;
//采用模板实现类实现,默认构造函数
vector(v.begin(), v.end());
//将v[begin(), end())区间中的元素拷贝给本身。
vector(n, elem);
//构造函数将n个elem拷贝给本身。
vector(const vector &vec);
//拷贝构造函数。void test() { vector<int> v; for (int i = 0; i < 10; i++) { v.push_back(i); } //通过区间的方式进行构造 vector<int>v2(v.begin(),v.end()); //n个elem构造 vector<int>v3(10, 100); //拷贝构造 vector<int> v4(v3); }
二、vcetor赋值操作和容量大小
vector& operator=(const vector &vec);
//重载等号操作符
assign(beg, end);
//将[beg, end)区间中的数据拷贝赋值给本身。
assign(n, elem);
//将n个elem拷贝赋值给本身。void test2() { vector<int> v1; for (int i = 0; i < 10; i++) v1.push_back(i); vector <int> v2; v2 = v1; vector<int> v3; v3.assign(v2.begin(),v2.end()); vector<int> v4; v4.assign(10,999); }
empty();
//判断容器是否为空
capacity();
//容器的容量
size();
//返回容器中元素的个数
resize(int num);
//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。//如果容器变短,则末尾超出容器长度的元素被删除。
resize(int num, elem);
//重新指定容器的长度为num,若容器变长,则以elem值填充新位置。//如果容器变短,则末尾超出容器长度的元素被删除
三、vcetor插入和删除
push_back(ele);
//尾部插入元素ele
pop_back();
//删除最后一个元素
insert(const_iterator pos, ele);
//迭代器指向位置pos插入元素ele
insert(const_iterator pos, int count,ele);
//迭代器指向位置pos插入count个元素ele
erase(const_iterator pos);
//删除迭代器指向的元素
erase(const_iterator start, const_iterator end);
//删除迭代器从start到end之间的元素
clear();
//删除容器中所有元素void test1() { vector<int> v; //尾插法 for (int i = 0; i < 10; i++) v.push_back(i); //尾删 v.pop_back(); //插入 v.insert(v.begin(), 10); //插入n个数 v.insert(v.begin(),2,999); //删除 v.erase(v.begin()); //清空 v.erase(v.begin(),v.end()); }
四、数据存取和容器数据互换
at(int idx);
//返回索引idx所指的数据
operator[];
//返回索引idx所指的数据
front();
//返回容器中第一个数据元素
back();
//返回容器中最后一个数据元素void test1() { vector<int> v; for (int i = 0; i < 10; i++) v.push_back(i); //中括号访问数据 for (int i = 0; i < v.size(); i++) { cout << v[i]<<" "; } cout << endl; //at访问 for (int i = 0; i < v.size(); i++) { cout << v.at(i)<<" " ; } cout << endl; //获取第一个元素 cout<<v.front() <<endl; //获取最后一个元素 cout << v.back() << endl; }
swap(vec);
// 实现两个容器内元素的互换void test3() { vector<int> v; vector<int> v2; for (int i = 0; i < 10; i++) { v.push_back(i); } for (int i = 10; i <20; i++) { v2.push_back(i); } myPrint(v); myPrint(v2); v.swap(v2); //交换后 myPrint(v); myPrint(v2); }