专栏文章

vector

学习·文化课参与者 1已保存评论 7

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
7 条
当前快照
1 份
快照标识符
@miqrhizv
此快照首次捕获于
2025/12/04 09:33
3 个月前
此快照最后确认于
2025/12/04 09:33
3 个月前
查看原文
vector容器
  1. 定义与基本概念
    • 在C++ 中,vector是一个模板类,属于C++ 标准模板库(STL)的一部分。它提供了动态大小的数组功能,这意味着可以在运行时根据需要改变数组的大小。vector位于<vector>头文件中,所以在使用vector之前,需要包含这个头文件(#include <vector>)。
    • 例如,定义一个存储整数的vector可以这样写:vector<int> myVector;。这就创建了一个名为myVector的空vector,它可以用来存储整数。
  2. 初始化方式
    • 默认初始化:如上面的例子vector<int> myVector;,创建了一个空的vector,其大小为0。
    • 指定大小初始化:可以指定vector的初始大小和初始值。例如,vector<int> myVectorWithSize(5);创建了一个包含5个元素的vector,每个元素都被默认初始化为0(对于整数类型)。如果想指定初始值,可以这样写:vector<int> myVectorWithValue(3, 10);,这就创建了一个包含3个元素的vector,每个元素的值都是10。
    • 使用初始化列表初始化:可以使用花括号初始化列表来初始化vector。例如,vector<int> myVectorList = {1, 2, 3};创建了一个包含3个元素的vector,其元素分别为1、2和3。
  3. 元素访问
    • 通过下标访问:可以像访问普通数组一样访问vector中的元素。例如,对于vector<int> myVector = {1, 2, 3};,可以使用myVector[0]来访问第一个元素(值为1),myVector[1]访问第二个元素(值为2)等。需要注意的是,和数组一样,下标是从0开始的,并且在使用下标访问时,要确保下标不超出vector的范围,否则会导致程序出现未定义行为(通常是程序崩溃或产生错误的结果)。
    • 使用at函数访问vector还提供了at函数来访问元素,例如myVector.at(0)。与下标访问不同的是,at函数会进行边界检查,如果下标超出范围,会抛出std::out_of_range异常,这样可以在一定程度上增加程序的安全性。
  4. 添加和删除元素
    • push_back函数添加元素:这是最常用的向vector添加元素的方法。例如,vector<int> myVector; myVector.push_back(4);,这会在vector的末尾添加一个值为4的元素。可以多次调用push_back来添加多个元素。
    • insert函数插入元素insert函数可以在指定位置插入元素。例如,vector<int> myVector = {1, 3}; myVector.insert(myVector.begin() + 1, 2);,这里myVector.begin()返回指向vector第一个元素的迭代器,myVector.begin()+1指向第二个元素的位置,insert函数在这个位置插入一个值为2的元素,之后myVector就变为{1, 2, 3}
    • pop_back函数删除元素:用于删除vector末尾的元素。例如,vector<int> myVector = {1, 2, 3}; myVector.pop_back();,执行后myVector变为{1, 2}
    • erase函数删除元素:可以删除指定位置的元素。例如,vector<int> myVector = {1, 2, 3}; myVector.erase(myVector.begin() + 1);,这会删除第二个元素,myVector变为{1, 3}
  5. 获取大小和容量相关信息
    • size函数获取元素个数:例如,vector<int> myVector = {1, 2, 3}; int size = myVector.size();,这里size的值为3,因为myVector中有3个元素。
    • capacity函数获取容量:容量是指vector在分配的内存中能够容纳的元素数量。例如,一个vector可能有3个元素,但它的容量可能是5,这意味着它还可以再添加2个元素而不需要重新分配内存。当添加元素导致vector的大小超过其容量时,vector会自动重新分配内存,这个过程可能会比较耗时。
    • empty函数判断是否为空:如果vector中没有元素,empty函数返回true,否则返回false。例如,vector<int> myEmptyVector; bool isEmpty = myEmptyVector.empty();,这里isEmpty的值为true
  6. 迭代器(Iterators)
    • 迭代器是一种用于遍历vector(以及其他容器)的对象。vector提供了beginend两个函数来获取迭代器。begin返回指向vector第一个元素的迭代器,end返回指向vector最后一个元素之后位置的迭代器。例如,vector<int> myVector = {1, 2, 3}; for (auto it = myVector.begin(); it!= myVector.end(); ++it) { cout << *it << " "; },这里it是迭代器,*it用于访问迭代器指向的元素,这段代码会输出1 2 3。迭代器的类型可以是vector<T>::iterator(其中Tvector中存储的元素类型),也可以使用auto关键字让编译器自动推断迭代器的类型。

评论

7 条评论,欢迎与作者交流。

正在加载评论...