增删查改
在C++中,可以使用以下方法对vector
进行增删查改操作:
-
增加元素:
push_back(element)
: 在vector
的末尾添加一个元素。insert(iterator, element)
: 在指定位置之前插入一个元素。
-
删除元素:
pop_back()
: 删除vector
的末尾元素。erase(iterator)
: 删除指定位置的元素。erase(start_iterator, end_iterator)
: 删除指定范围内的元素。
-
访问元素:
operator[]
: 使用索引访问指定位置的元素。at(index)
: 使用索引访问指定位置的元素,同时会进行边界检查。
-
修改元素:
operator[]
: 使用索引修改指定位置的元素。at(index)
: 使用索引修改指定位置的元素,同时会进行边界检查。
下面是一些示例代码,展示了如何使用这些方法进行增删查改操作:
#include <iostream>
#include <vector>
int main() {
vector<int> nums;
// 增加元素
nums.push_back(5);
nums.push_back(10);
nums.insert(nums.begin(), 3);
// 在位置 index = 2 之前插入元素 10
auto it = numbers.begin() + 2;
numbers.insert(it, 10);
// 删除元素
nums.pop_back();
nums.erase(nums.begin() + 1);
// 访问元素
cout << "元素个数:" << nums.size() << endl;
cout << "第一个元素:" << nums[0] << endl;
cout << "第二个元素:" << nums.at(1) << endl;
// 修改元素
nums[0] = 7;
nums.at(1) = 12;
// 遍历元素
for (int num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
注意索引和iterator区别:
下边是gpt的回答,可以参考:
索引和迭代器是用于访问容器元素的不同方式。
索引是一种用于访问容器元素的整数值,它表示元素在容器中的位置。对于支持随机访问的容器(如 vector
、array
),可以使用索引来直接访问和修改容器中的元素。索引从 0 开始,并依次递增,通过索引可以快速定位到容器中的元素。
迭代器是一种更通用的访问容器元素的方式,它是一种类似指针的对象,可以指向容器中的特定位置。迭代器提供了比索引更灵活的访问方式,允许在容器中进行遍历、访问和修改操作。迭代器可以通过容器的成员函数获得,如 begin()
和 end()
,或者通过其他迭代器运算符进行计算和移动。
主要区别如下:
-
精确度:索引是一个精确的整数值,直接指示元素在容器中的位置,而迭代器是一个更抽象的概念,可以表示容器中的位置,但没有具体的数值表示。
-
支持程度:索引可以用于支持随机访问的容器,如
vector
和array
,而迭代器可以用于各种不同类型的容器,包括不支持随机访问的容器,如list
和set
。 -
功能:索引可以用于直接访问和修改容器中的元素,而迭代器除了访问和修改外,还提供了其他操作,如迭代器的移动、比较和解引用等。
在使用容器时,可以根据具体的需求和操作类型选择使用索引或迭代器。索引适用于需要直接访问和修改元素的情况,而迭代器适用于更通用的遍历和操作容器元素的场景。
注意:
在使用迭代器遍历容器时,通常使用 begin()
到 end()
来表示范围,其中 begin()
指向第一个元素,而 end()
指向最后一个元素后面的位置。