c++vector & sort()

c++ vector容器

C++ 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。

vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。

与 C++ 数组相比,vector 具有更多的灵活性和功能,使其成为 C++ 中常用的数据结构之一。

vector 是 C++ 标准模板库(STL)的一部分,提供了灵活的接口和高效的操作。
基本特征

  1. 动态大小:vector 的大小可以根据需要自动增长和缩小。
  2. 连续储存:vector 中的元素在内存中是连续存储的,这使得访问元素非常快速。
  3. 可迭代:vector 可以被迭代,你可以使用循环(如 for 循环)来访问它的元素。
  4. 元素类型:vector 可以存储任何类型的元素,包括内置类型、对象、指针等。

创建vector

要使用vector,首先需要包含<vector>头文件:

1
#include <vector>

以创建int类型的vector为例:

1
std::vector<int> myVector; //创建一个储存int类型的空vector

也可以通过以下代码指定初始大小和初始值:

1
2
3
std::vector<int> myVector(5) // 创建一个包含 5 个整数的 vector,每个值都为默认值(0)
std::vector<int> myVector(5, 10); // 创建一个包含 5 个整数的 vector,每个值都为 10
std::vector<int> vec2 = {1, 2, 3, 4}; // 初始化一个包含元素的 vector

添加元素

  1. 从最后加入
    向vector中添加元素可以使用push_back()函数,新的数据会被放到数组的末尾。
1
myVector.push_back(7); // 将整数 7 添加到 vector 的末尾
  1. 从中间插入
    使用insert()函数,在vector中间插入元素:
1
myVector.insert(myVector.begin(),5); // 将整数 5 添加到 vector 的开头

其中,begin()函数返回vector容器中其实元素的迭代器

访问元素

单次访问

可以使用下标操作符 [] 或 at() 方法访问 vector 中的元素:

1
2
int x = myVector[0]; // 获取第一个元素
int y = myVector.at(1); // 获取第二个元素

迭代访问

可以使用迭代器来遍历vector中的元素,其中std::vector<int>::iterator 是一个迭代器类型,专门用于遍历和操作 std::vector<int> 容器中的元素。在 C++ 中,迭代器是一种使我们能够访问容器(如向量、列表等)中元素的对象,而无需关心容器的内部结构。

1
2
3
4
for (auto it = myVector.begin(); it != myVector.end(); ++it) {
//it 被推导为:std::vector<int>::iterator
std::cout << *it << " ";
}
  1. 其中end()函数返回vector函数的最后一个迭代器的下一个位置的迭代器。
  2. auto类型是一种自动类型推导的关键字,它允许编译器自动推断变量的类型。使用auto声明变量时,编译器会根据变量的初始化表达式来推断其类型。

获取大小

可以使用 size()方法获取 vector 中元素的数量(返回一个整型):

1
int size = myVector.size(); // 获取 vector 中的元素数量

删除元素

可以使用 erase() 方法删除 vector 中的元素:

1
myVector.erase(myVector.begin() + 2); // 删除第三个元素

清空 Vector

可以使用 clear() 方法清空 vector 中的所有元素:

1
myVector.clear(); // 清空 vector

二维vector数组

vector二维数组的创建

vector多维数组与指针数组相似,在一个vector容器中放入另一个vector容器。
创建方式如下:

1
vector<vector<int>> table(size1, vector<int>(size2, 0));

以上代码表示,创建了一个大小为size1 * size2 的二维数组并全部初始化为0。

sort()函数

使用sort函数需要引用#include<algorithm>头文件。

sort()函数的用法

sort(begin, end, cmp)

  1. begin 为指向待排序的数组的第一个元素的指针
  2. end 为指向待排序数组的最后一个元素的下一个位置的指针
  3. cmp 为排序准则,可省略,省略时默认从小到大排序。若想从大到小排序可写greater<int>(),其中int也可写为float,double。

自定义排序准则

自定义传入准则需要可以自己构造一个返回值为bool类型的函数。

1
2
3
4
bool cmp(int x,int y)
{
return <_judge>
}

其中,x > y则为大到小的排序,x < y 为小到大的排序准则。


c++vector & sort()
http://blog.ulna520.com/2024/07/14/c++ vector/
Veröffentlicht am
July 14, 2024
Urheberrechtshinweis