文章目录
- 1.vector的使用
- 2.vector的增删查改
- (1)push_back 尾插
- (2)pop_back 尾删
- (3)find 查找
- (4)insert 在position之前插入val
- (5)erase 删除指定位置的数据
- (6)swap 交换两个vector的数据空间
- (7)operator[ ] 像数组一样访问
1.vector的使用
vector完整介绍
vector和含义、vector构造函数、vector迭代器
vector有关空间函数的使用
2.vector的增删查改
(1)push_back 尾插
push_back()函数用于向容器的末尾添加一个元素。 它接受一个参数,即要添加的元素的值(或对象)。当向 vector 容器中添加元素时,其大小会动态增长,以容纳新添加的元素。
下面是push_back()函数的定义和用法示例:
我们创建了一个空的std::vector容器 numbers。然后使用push_back()函数向容器中添加元素。我们连续添加了三个元素,分别是 10、20 和 30。
最后,我们打印出容器的大小和元素,可以看到容器的大小为 3,并且容器中的元素分别为 10、20 和 30。
通过使用push_back()函数,我们可以轻松地向std::vector容器中添加元素,无需手动调整容器的大小。这使得在需要动态添加元素的情况下,使用vector变得更加方便和灵活。
#include <iostream>
#include <vector>int main() {std::vector<int> numbers; // 创建一个空的int类型的vector容器numbers.push_back(10); // 添加元素 10numbers.push_back(20); // 添加元素 20numbers.push_back(30); // 添加元素 30std::cout << "容器的大小为:" << numbers.size() << std::endl;std::cout << "容器的元素为:";for (const auto& number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0;
}//容器的大小为:3
//容器的元素为:10 20 30
(2)pop_back 尾删
pop_back()函数用于移除容器中的最后一个元素。它不接受任何参数。 调用pop_back()函数将使容器的大小减小1。
下面是pop_back()函数的定义和使用示例:
我们首先创建一个包含5个元素的std::vector容器 numbers。然后打印出容器的初始大小和元素。接下来,我们调用 pop_back() 函数来删除容器中的最后一个元素。
在这种情况下,最后一个元素 50 被从容器中移除。最后,我们再次打印容器的大小和元素,可以看到容器的大小减小了1,元素变为 10 20 30 40。
使用pop_back()函数,我们可以方便地从std::vector容器中删除最后一个元素,而无需手动调整容器的大小。这对于需要按照特定顺序添加和删除元素的情况非常有用。
#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器std::cout << "初始容器的大小为:" << numbers.size() << std::endl;std::cout << "初始容器的元素为:";for (const auto& number : numbers) {std::cout << number << " ";}std::cout << std::endl;numbers.pop_back(); // 移除最后一个元素std::cout << "调用pop_back()后的容器的大小为:" << numbers.size() << std::endl;std::cout << "调用pop_back()后的容器的元素为:";for (const auto& number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0;
}//初始容器的大小为:5
//初始容器的元素为:10 20 30 40 50
//调用pop_back()后的容器的大小为:4
//调用pop_back()后的容器的元素为:10 20 30 40
(3)find 查找
find()函数用于在容器中搜索给定的值,并返回指向第一个匹配元素的迭代器。如果找不到匹配的元素,则返回指向容器末尾的迭代器 end()。
下面是find()函数的定义和使用示例:
使用 find() 函数,我们可以方便地在 std::vector 容器中查找指定的值,并获得该元素在容器中的位置。这对于搜索和定位特定元素很有用。请注意,在使用 find() 函数之前,需要包含头文件 < algorithm >。
#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> numbers = {10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器// 在容器中查找值为 30 的元素auto it = std::find(numbers.begin(), numbers.end(), 30);if (it != numbers.end()) {std::cout << "找到值为 30 的元素在容器中的位置:" << std::distance(numbers.begin(), it) << std::endl;}else {std::cout << "未找到值为 30 的元素" << std::endl;}return 0;
}//找到值为 30 的元素在容器中的位置:2
(4)insert 在position之前插入val
insert()函数用于在指定位置之前插入一个或多个元素。它接受两个参数,第一个是要插入的位置的迭代器,第二个是要插入的元素或范围。
其中,pos是指定插入位置的迭代器,val 是要插入的元素的值。
使用insert()函数,我们可以向std::vector容器中指定的位置插入一个或多个元素,从而在容器中实现元素的插入操作。这对于在特定位置插入新元素或在容器中间插入一段连续的元素非常有用。
下面是insert()函数的定义和使用示例:
1.在指定位置插入一个元素:
#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器// 在位置 index=2 插入一个元素 15auto it = numbers.insert(numbers.begin() + 2, 15);std::cout << "容器的元素为:";for (const auto& number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0;
}//容器的元素为:10 20 15 30 40 50
2.在指定位置插入多个元素:
#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器// 在位置 index=2 插入三个元素: 15, 25, 35numbers.insert(numbers.begin() + 2, {15, 25, 35});std::cout << "容器的元素为:";for (const auto& number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0;
}//容器的元素为:10 20 15 25 35 30 40 50
(5)erase 删除指定位置的数据
erase()函数用于从容器中删除一个或一段元素。 它接受一个或两个参数,第一个参数是要删除的位置或范围的迭代器。
使用erase()函数,我们可以从std::vector容器中删除一个或一段指定位置的元素,实现对容器中元素的删除操作。这对于删除特定位置的元素或删除一段连续的元素非常有用。
以下是erase()函数的定义和使用示例:
1.删除指定位置的一个元素:
#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器// 删除位置为 index=2 的元素auto it = numbers.erase(numbers.begin() + 2);std::cout << "容器的元素为:";for (const auto& number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0;
}//容器的元素为:10 20 40 50
2.删除指定范围的一段元素:
#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器// 删除从 index=1 到 index=3 的元素numbers.erase(numbers.begin() + 1, numbers.begin() + 4);std::cout << "容器的元素为:";for (const auto& number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0;
}//容器的元素为:10 50
(6)swap 交换两个vector的数据空间
swap()函数用于交换两个对象的值。 它接受两个参数,即要交换值的对象。
swap() 函数可用于交换任意类型的对象值,包括基本数据类型、自定义类型和STL容器等。它是一个非常方便的函数,可以快速交换对象的值,避免了手动进行临时变量的赋值操作。
以下是swap()函数的定义和使用示例:
#include <iostream>int main() {int a = 10;int b = 20;std::cout << "交换前,a = " << a << ", b = " << b << std::endl;std::swap(a, b);std::cout << "交换后,a = " << a << ", b = " << b << std::endl;return 0;
}//交换前,a = 10, b = 20
//交换后,a = 20, b = 10
(7)operator[ ] 像数组一样访问
operator[]是一个重载运算符,用于通过索引访问容器、数组、字符串等类似的可索引的数据结构的元素。 它使我们可以像使用数组一样使用容器。
通过使用 operator[] 运算符,我们可以根据索引访问容器中的元素,就像使用数组一样。注意,索引从0开始,直到容器的 size()-1。
需要注意的是,当使用 operator[] 运算符访问容器的元素时,没有边界检查。因此,如果索引超出容器的有效范围,会导致未定义的行为。在实际应用中,确保索引的合法性是非常重要的。
以下是operator[]的定义和使用示例:
#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {10, 20, 30, 40, 50};std::cout << "容器的元素为:";for (size_t i = 0; i < numbers.size(); ++i) {std::cout << numbers[i] << " ";}std::cout << std::endl;return 0;
}//容器的元素为:10 20 30 40 50