河北哪些大学网站建设专业比较好,罗湖商城网站设计费用,WordPress模仿腾讯,花店网站源码目录 链接
1. vector的定义
2. vector的构造
3. vector 的遍历
4. vector 的扩容机制
5. vector 的空间接口
5.1 resize 接口 5.2 push_back
5.3 insert
5.4 erase
5.5 流插入与流提取
vector 并不支持流插入与流提取#xff0c;但是可以自己设计#xff0c;更…目录 链接
1. vector的定义
2. vector的构造
3. vector 的遍历
4. vector 的扩容机制
5. vector 的空间接口
5.1 resize 接口 5.2 push_back
5.3 insert
5.4 erase
5.5 流插入与流提取
vector 并不支持流插入与流提取但是可以自己设计更加灵活方便
6. vector 的不同类型元素 链接
cplusplus.com/reference/vector/vector/https://cplusplus.com/reference/vector/vector/ 1. vector的定义
(constructor)构造函数声明接口说明vector()无参构造vectorsize_type n, const value_type val value_type()构造并初始化n个valvector (const vector x);拷贝构造vector (InputIterator first, InputIterator last);使用迭代器进行初始化构 造 2. vector的构造
//模版类只能显式实例化
vectorint v1;
vectorint v2(10, 1);//迭代器初始化
vectorint v3(v2.begin(), v2.end());
vectorint v4(v2.begin(), --v2.end()); 3. vector 的遍历 vector 与 string 的遍历相同并且做了更多的优化 void test_vector1()
{vectorint v1;vectorint v2(10, 1);vectorint v3(v2.begin(), --v2.end());//下标遍历for (size_t i 0; i v3.size(); i){cout v3[i] ;}cout endl;//迭代器遍历vectorint::iterator it v3.begin();while (it ! v3.end()){cout *it ;it;}cout endl;// 范围 for 遍历for (auto e : v3){cout e ;}cout endl;
} 4. vector 的扩容机制 vector 的扩容机制在 VS 环境下是1.5倍扩容在 g 环境下是2倍扩容和string相同 但是有一点不同 那就是string 的 reverse 接口如果给出的值小于原来的容量那么就可能会缩容但是 vector 的 reverse 接口如果给出一个小于原容量的值就不会缩容 void TestVectorExpend()
{size_t sz;vectorint v;sz v.capacity();cout capacity changed : sz \n;cout make a grow endl;for (size_t i 0; i 100; i){v.push_back(i);if (sz ! v.capacity()){sz v.capacity();cout capacity changed : sz \n;}}
} 5. vector 的空间接口
size获取数据个数capacity获取容量大小empty判断是否为空resize改变vector的sizereserve 改变vector的capacity 5.1 resize 接口 resize 接口是在原来 vector 对象的基础上进行添加数据 当然有两种情况 一种是添加数据容量小于原来的size就会减小size的值而不改变capacity的值容量不变 第二种情况就是大于size的值就会根据给定的值来扩容 vectorint v(10, 1);
cout v.size() endl;
cout v.capacity() endl;//小于size
v.resize(5, 2);
cout v.size() endl;
cout v.capacity() endl;//大于size
v.resize(15, 2);
cout v.size() endl;
cout v.capacity() endl; void test_vector3()
{//10个整形数据1vectorint v(10, 1);//申请20空间v.reserve(20);cout v.size() endl;cout v.capacity() endl;//10个整形数据1补上5个整形数据2v.resize(15, 2);cout v.size() endl;cout v.capacity() endl;//10个整形数据15个整形数据2补上10个整形数据3v.resize(25, 3);cout v.size() endl;cout v.capacity() endl;//只保留5个数据v.resize(5);cout v.size() endl;cout v.capacity() endl;
} 通常 vector 支持迭代器插入 5.2 push_back
//尾插
vectorint v(10, 1);
v.push_back(10);
for (auto e : v)
{cout e ;
}
cout endl; 5.3 insert
//头插
vectorint v(10, 1);
v.insert(v.begin(), 1);
for (auto e : v)
{cout e ;
}
cout endl;//第一个数3之后在第三个位置进行插入
v.insert(v.begin() 3, 1);
for (auto e : v)
{cout e ;
} 5.4 erase 删除指定位置的数据 //头删
vectorint v(10, 1);
v.erase(v.begin());
for (auto e : v)
{cout e ;
}
cout endl;//第一个数3之后删除第三个位置的数据
v.erase(v.begin() 3);
for (auto e : v)
{cout e ;
}
cout endl; 5.5 流插入与流提取 vector 并不支持流插入与流提取但是可以自己设计更加灵活方便 vectorint v(10);
for (size_t i 0; i v.size(); i)
{cin v[i];
}
for (auto e : v)
{cout e ;
}
cout endl; 6. vector 的不同类型元素 vector不光可以存储intdouble类型还可以存储日期类string自定义类型甚至还可以存储vector也就是存储二维数组 vectorvectorint二维数组存放整数类型 //二维数组//5个元素的一维数组vectorint v(5, 1);//开辟一个10行5列的二维数组vectorvectorint vv(10, v);vv[2][1]1;//这两段代码的意思是相同的//vv.operator[](2)operator[](1)2; 遍历 //二维数组//5个元素的一维数组vectorint v(5, 1);//开辟一个10行5列的二维数组vectorvectorint vv(10, v);//使用下标遍历二维数组for (int i 0; i vv.size(); i){for (int j 0; j v.size(); j){cout vv[i][j] ;}cout endl;} 感谢观看~