包含头文件:vector
整合
//vector:单端数组
void PrintVector(vector<int>& v) {
//利用迭代器打印vector容器
for (vector<int>:: iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
void vector_test_01() {
vector<int> v1; //无参构造(默认构造)
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
//利用区间的方式将v1赋值给v2,区间是左闭右开的
vector<int> v2(v1.begin(), v1.end());
vector<int> v3(5, 10); //给v3赋值5个10
vector<int> v4(v3); //拷贝构造
}
void vector_test_02() {
//赋值
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
vector<int> v2 = v1; // =赋值
vector<int>v3;
// assign赋值 v.assign(begin, end):两个迭代器,将区间内的元素赋值给v
v3.assign(v1.begin(), v1.end());
vector<int> v4;
v4.assign(5, 10); //v.assign(n, m):给v赋值n个m
}
void vector_test_03() {
//容量和大小
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
v1.empty(); //判断是否为空,空为true,不空为false(bool类型)
int c = v1.capacity(); //v1的容量
cout << c <<endl;
int s = v1.size(); //v1的大小,总是<=容量
cout << s << endl;
//v.resize(n):当n>原大小,默认在尾部添加多余的0,
//当<原大小,则删除尾部的其余元素
v1.resize(15);
v1.resize(20, 100); //v.resize(n, m):当n>原大小,在尾部添加多余的m
}
void vector_test_04() {
//插入和删除
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i); //尾插法
}
//尾删
v1.pop_back();
//v.insert(iterator, n):在迭代器的位置插入元素n,
//前一个参数只能是迭代器
v1.insert(v1.begin(), 100);
//v.insert(iterator, n, m):在迭代器的位置插入n个元素m,
//前一个参数只能是迭代器
v1.insert(v1.begin(), 2, 200);
//v.erase(iterator):在迭代器的位置删除元素,参数只能是迭代器
v1.erase(v1.begin());
//v.erase(iterator, iterator):在两个迭代器的位置之间删除所有元素,
//两个参数均只能是迭代器
v1.erase(v1.begin(), v1.begin()+3);
v1.clear(); //清空容器
}
void vector_test_05() {
//数据的存取
vector<int> v;
for (int i = 0; i < 10; i++) {
v.push_back(i);
}
cout << v[3] << endl; //使用v[n]来获得下标为n的元素,从0开始
cout << v.at(3) << endl; //使用v.at(n)来获得下标为n的元素,从0开始
cout << v.front() << endl; //v.front()返回第一个元素
cout << v.back() << endl; //v.back()返回最后一个元素
}
void vector_test_06() {
//互换容器
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
vector<int> v2;
for (int i = 9; i >= 0; i--) {
v2.push_back(i);
}
v1.swap(v2); //v1.swap(v2):交换两个容器
}
void vector_test_07() {
//预留空间
vector<int> v;
//v.reserve(n):预留n大小的空间,不可被访问,
//一般用于已知要开辟空间的大小,减少系统开辟空间的次数
v.reserve(100);
}
迭代器打印
void PrintVector(vector<int>& v) {
//利用迭代器打印vector容器
for (vector<int>:: iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
构造
void vector_test_01() {
vector<int> v1; //无参构造(默认构造)
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
//利用区间的方式将v1赋值给v2,区间是左闭右开的
vector<int> v2(v1.begin(), v1.end());
vector<int> v3(5, 10); //给v3赋值5个10
vector<int> v4(v3); //拷贝构造
}
赋值
void vector_test_02() {
//赋值
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
vector<int> v2 = v1; // =赋值
vector<int>v3;
// assign赋值 v.assign(begin, end):两个迭代器,将区间内的元素赋值给v
v3.assign(v1.begin(), v1.end());
vector<int> v4;
v4.assign(5, 10); //v.assign(n, m):给v赋值n个m
}
容量和大小
void vector_test_03() {
//容量和大小
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
v1.empty(); //判断是否为空,空为true,不空为false(bool类型)
int c = v1.capacity(); //v1的容量
cout << c <<endl;
int s = v1.size(); //v1的大小,总是<=容量
cout << s << endl;
//v.resize(n):当n>原大小,默认在尾部添加多余的0,
//当<原大小,则删除尾部的其余元素
v1.resize(15);
v1.resize(20, 100); //v.resize(n, m):当n>原大小,在尾部添加多余的m
}
插入和删除
void vector_test_04() {
//插入和删除
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i); //尾插法
}
//尾删
v1.pop_back();
//v.insert(iterator, n):在迭代器的位置插入元素n,
//前一个参数只能是迭代器
v1.insert(v1.begin(), 100);
//v.insert(iterator, n, m):在迭代器的位置插入n个元素m,
//前一个参数只能是迭代器
v1.insert(v1.begin(), 2, 200);
//v.erase(iterator):在迭代器的位置删除元素,参数只能是迭代器
v1.erase(v1.begin());
//v.erase(iterator, iterator):在两个迭代器的位置之间删除所有元素,
//两个参数均只能是迭代器
v1.erase(v1.begin(), v1.begin()+3);
v1.clear(); //清空容器
}
数据的存取
void vector_test_05() {
//数据的存取
vector<int> v;
for (int i = 0; i < 10; i++) {
v.push_back(i);
}
cout << v[3] << endl; //使用v[n]来获得下标为n的元素,从0开始
cout << v.at(3) << endl; //使用v.at(n)来获得下标为n的元素,从0开始
cout << v.front() << endl; //v.front()返回第一个元素
cout << v.back() << endl; //v.back()返回最后一个元素
}
互换容器
void vector_test_06() {
//互换容器
vector<int> v1;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
vector<int> v2;
for (int i = 9; i >= 0; i--) {
v2.push_back(i);
}
v1.swap(v2); //v1.swap(v2):交换两个容器
}
预留空间
void vector_test_07() {
//预留空间
vector<int> v;
//v.reserve(n):预留n大小的空间,不可被访问,
//一般用于已知要开辟空间的大小,减少系统开辟空间的次数
v.reserve(100);
}