2. 删除所有元素 , 这里只是清空元素内容为 0
// <2> 删除所有元素 , 这里只是清空元素内容为 0 vector_1.clear();
3. 删除指定位置区间的元素 , 这里只是清空元素内容为 0 , 传入 2 个参数 ;
① 第 1 个是删除的起始位置 ;
② 第 2 个参数是删除的结束位置 ;
// <3> 删除指定位置区间的元素 , 这里只是清空元素内容为 0 // 第 1 个是删除的起始位置 , // 第 2 个参数是删除的结束位置 ; //删除从开始到结束的所有元素 vector_1.erase(vector_1.begin() , vector_1.end());
4. 关于删除元素的内存说明 : 删除若干元素后 , vector 的容量 , 即内存所占的空间是不会减小的 ;
5. 打印删除元素后的 vector 容器大小 : 调用 vector 的 capacity() 方法即可获取其容量大小 ;
① 代码示例 :
//打印 vector 容器容量大小 , 调用 vector 的 capacity() 方法即可获取其容量大小 // 这个容量大小是元素个数 , 不是内存字节数 cout << "打印 vector_1 容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl;
② 执行结果 :
打印 vector_1 容量大小 : vector_1.capacity() : 2
这个容量大小是元素个数 , 不是内存字节数 ;
vector ( 向量 ) 容量改变
1. 容量修改 : 删除元素 , 并不能修改容器的容量 , 如果要修改容量 , 需要使用其他容器与该容器进行交换 ;
2. 容器交换 : 调用 vector 的 swap() 方法 , 进行容器交换 , 传入 vector 容器对象当做参数 ;
① 代码示例 :
//创建一个新的 vector , 此时其容量为 0 vector<int> vector_swap; //将创建的新的 vector_swap 与 vector_1 容器进行交换 vector_swap.swap(vector_1); cout << "打印 vector_1 交换后的容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl;
② 执行结果 :
打印 vector_1 交换后的容量大小 : vector_1.capacity() : 0
vector ( 向量 ) 涉及到的运算符重载
vector 运算符重载 : 使用 " [] " 可以访问 vector 中指定索引的变量 , vector 对 " [] " 符号进行了重载 , Ctrl + 左键 点击中括号符号 , 就可以跳转到 vector 定义的位置 , 下面的内容是 vector 对 " [] " 进行运算符重载的内容 ;
_NODISCARD _Ty& operator[](const size_type _Pos) { auto& _My_data = _Mypair._Myval2; #if _CONTAINER_DEBUG_LEVEL > 0 _STL_VERIFY( _Pos < static_cast<size_type>(_My_data._Mylast - _My_data._Myfirst), "vector subscript out of range"); #endif // _CONTAINER_DEBUG_LEVEL > 0 return _My_data._Myfirst[_Pos]; }
vector ( 向量 ) 相关源码
1. 代码示例 :
// 004_Container.cpp: 定义应用程序的入口点。 // #include "004_Container.h" //vector 是 C++ 中定义的模板类 #include <vector> using namespace std; int main() { cout << "Hello Container。" << endl; // I . vector 向量 ( vector , dequeue , list 调用方式基本一致 ) //vector 向量是一种支持快速随机访问的 , 连续存储元素的容器 //声明向量 vector<int> vector_1; //调用向量的构造方法 , 并传入一个 int 类型参数 //表示创建一个有 8 个 int 类型元素空间的向量 vector<int> vector_2(8); //表示创建有 8 个元素的向量 , 8 个元素的值都是 2 vector<int> vector_3(8 , 2); //初始化向量时 , 传入另一个向量 vector<int> vector_4(vector_3); // 2. 使用向量 : 增删查改 // ( 1 ) 增加元素 : 调用 push_back 方法 , 容器出入策略 , 后进先出 vector_1.push_back(8); vector_1.push_back(88); // ( 2 ) 查询元素 : // <1> 通过下标获取元素 // 这里的 [] 在 vector 中进行了运算符重载 cout << "通过下标获取 vector_1 第 0 个元素 : vector_1[0] : " << vector_1[0] << endl; // <2> 通过 at() 方法获取对应索引的元素 cout << "通过 at 方法获取 vector_1 第 0 个元素 : vector_1.at(0) : " << vector_1.at(0) << endl; // <3> 获取第一个元素 cout << "通过 front 方法获取 vector_1 第 1 个元素 : vector_1.front() : " << vector_1.front() << endl; // <4> 获取最后一个元素 cout << "通过 back 方法获取 vector_1 最后 1 个元素 : vector_1.back() : " << vector_1.back() << endl; // ( 4 ) 删除元素 : // <1> 调用 pop_back 方法 , 容器出入策略 , 后进先出 vector_1.pop_back(); //之前向 vector 中先后放入了 8 和 88 两个数 , // 然后删除了后一个元素 88 , 目前只剩下一个元素 8 // <2> 删除所有元素 , 这里只是清空元素内容为 0 vector_1.clear(); // <3> 删除指定位置区间的元素 , 这里只是清空元素内容为 0 // 第 1 个是删除的起始位置 , // 第 2 个参数是删除的结束位置 ; //删除从开始到结束的所有元素 vector_1.erase(vector_1.begin() , vector_1.end()); //关于删除元素内存说明 : // 删除若干元素后 , vector 的容量 , 即内存所占的空间是不会减小的 ; // 调用删除方法后 , 就不能在查询上述元素了 //打印 vector 容器容量大小 , 调用 vector 的 capacity() 方法即可获取其容量大小 // 这个容量大小是元素个数 , 不是内存字节数 cout << "打印 vector_1 容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl; // ( 5 ) 改变容量 , 容器交换 , 这里使用一个容量为 0 的容器与之交换即可 //创建一个新的 vector , 此时其容量为 0 vector<int> vector_swap; //将创建的新的 vector_swap 与 vector_1 容器进行交换 vector_swap.swap(vector_1); cout << "打印 vector_1 交换后的容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl; return 0; }
2.执行结果 :
Hello Container。 通过下标获取 vector_1 第 0 个元素 : vector_1[0] : 8 通过 at 方法获取 vector_1 第 0 个元素 : vector_1.at(0) : 8 通过 front 方法获取 vector_1 第 1 个元素 : vector_1.front() : 8 通过 back 方法获取 vector_1 最后 1 个元素 : vector_1.back() : 88 打印 vector_1 容量大小 : vector_1.capacity() : 2 打印 vector_1 交换后的容量大小 : vector_1.capacity() : 0