目录
1.vector构造函数:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
void printVector(vector<int>&v)
{
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
vector<int>v1;//默认构造,无参构造
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
//区间构造
vector<int>v2(v1.begin(),v1.end());
printVector(v2);
//n个元素的构造
vector<int>v3(10, 6);//一参数 个数 ,二参数 元素
printVector(v3);
//拷贝构造
vector<int>v4(v3);
printVector(v4);
}
int main()
{
test01();
}
2.vector赋值操作:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
void printVector(vector<int>& v)
{
for (vector<int>::iterator elem = v.begin(); elem != v.end(); elem++)
{
cout << *elem << " ";
}
cout << endl;
}
void test01()
{
vector<int>v1;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
vector<int>v2;
//赋值
v2 = v1;
printVector(v2);
//assign赋值
vector<int>v3;
v3.assign(v1.begin(), v1.end());
printVector(v3);
//n个elem方式赋值
vector<int>v4;
v4.assign(10, 6);
printVector(v4);
}
int main()
{
test01();
}
3.vector容量和大小:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
void printVector(vector<int>& v)
{
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
//vector容器的大小操作和容量
void test01()
{
vector<int>v1;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
if (v1.empty())
{
cout << "v1为空" << endl;
}
else
{
cout << "v1不为空" << endl;
cout << "v1的容量为:" << v1.capacity() << endl;
cout << "v1的大小为:" << v1.size() << endl;
}
//重新指定大小 指大
v1.resize(15, 100);//利用重载版本,可以指定默认填充值,参数2
printVector(v1);//如果重新指定的比原来长了,默认用0填充新的位置
v1.resize(5);//如果重新指定的比原来短了,直接删除
printVector(v1);
}
int main()
{
test01();
}
4.插入和删除 :
#include<iostream>
using namespace std;
#include<string>
#include<vector>
void printVector(vector<int>& v)
{
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
//vector容器的插入和删除
void test01()
{
vector<int>v1;
//尾插
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
printVector(v1);
//尾删
v1.pop_back();
printVector(v1);
//插入 第一个参数是迭代器
v1.insert(v1.begin(), 0);//头部插个0
printVector(v1);
//重载版本
v1.insert(v1.begin(), 2, 100);//头部插两个100
printVector(v1);
//删除 第一个参数是迭代器
v1.erase(v1.begin());//删除第一个 即100
printVector(v1);
v1.erase(v1.begin(), v1.end());//重载版本 头和尾直接全部删除
//v1.clear();//清空
printVector(v1);
}
int main()
{
test01();
}
5.deque数据存取:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include<deque>
void test01()
{
deque<int>d;
d.push_back(10);
d.push_back(20);
d.push_back(30);
d.push_front(300);
d.push_front(200);
d.push_front(100);
//[]访问元素
for (int i = 0; i < d.size(); i++)
{
cout << d[i] <<" ";
}
cout << endl;
//at访问元素
for (int i = 0; i < d.size(); i++)
{
cout << d.at(i)<<" ";
}
cout << endl;
//访问第一个元素
cout << "第一个元素:"<<d.front() << endl;
//访问第二个元素
cout <<"第二个元素:"<< d.back() << endl;
}
int main()
{
test01();
}
6.deque排序:
#include<iostream>
using namespace std;
#include<algorithm>
#include<deque>
void printDeque(const deque<int>& d)
{
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int>d;
d.push_back(10);
d.push_back(20);
d.push_back(30);
d.push_front(300);
d.push_front(200);
d.push_front(100);
printDeque(d);
//默认从小到大
//对于支持随机访问的迭代器的容器,都可以用sort算法直接对其排序
//vector容器也可以利用sort
sort(d.begin(), d.end());
cout << "升序排列为:";
printDeque(d);
}
int main()
{
test01();
}
7.vector互换容器:
#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
void printVector(vector<int> &v)
{
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
vector<int>v1;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
vector<int>v2;
for (int i = 10; i >0; i--)
{
v2.push_back(i);
}
cout << "交换前:" << endl;
printVector(v1);
printVector(v2);
v1.swap(v2);
cout << "交换后:" << endl;
printVector(v1);
printVector(v2);
}
void test02()
{
vector<int>v;
for (int i = 0; i < 1000; i++)
{
v.push_back(i);
}
cout << "收缩内存前:" << endl;
cout << "v的容量:" << v.capacity() << endl;
cout << "v的大小:" << v.size() << endl;
v.resize(3);//重新指定大小为3
cout << "重新指定大小为3:" << endl;
cout << "v的容量:" << v.capacity() << endl;
cout << "v的大小:" << v.size() << endl;
//收缩内存
vector<int>(v).swap(v);//匿名对象
cout << "swap收缩内存后:" << endl;
cout << "v的容量:" << v.capacity() << endl;
cout << "v的大小:" << v.size() << endl;
}
int main()
{
//test01();
test02();
}
swap还可以收缩内存:
8.vector预留空间: