c++:vector排序
时间: 2023-10-26 15:07:08 浏览: 76
在C++中,vector是一个动态数组,可以在运行时动态地增加或减少其大小。vector中的元素可以通过下标访问,也可以使用迭代器进行访问。vector提供了sort()函数来对其内部元素进行排序。sort()函数需要传入两个迭代器,分别指向vector的起始位置和结束位置,以及一个比较函数,用于指定排序方式。比较函数可以使用lambda表达式来定义。例如,对于一个存储Point2f类型的vector,可以使用以下代码对其按照x坐标进行排序:
```
sort(pts_v.begin(), pts_v.end(), [](Point2f pts1, Point2f pts2) {return pts1.x < pts2.x; });
```
这将按照每个Point2f元素的x坐标进行升序排序。
相关问题
c++ std::vector 排序
C++中的std::vector是一个动态数组容器,可以存储任意类型的元素。要对std::vector进行排序,可以使用std::sort函数,该函数位于<algorithm>头文件中。
下面是对std::vector进行排序的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {5, 2, 8, 1, 9};
// 使用std::sort对std::vector进行排序
std::sort(nums.begin(), nums.end());
// 输出排序后的结果
for (int num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
上述代码中,我们首先包含了<iostream>、<vector>和<algorithm>头文件。然后创建了一个std::vector<int>类型的nums,并初始化了一些整数元素。
接下来,我们使用std::sort函数对nums进行排序,传入nums.begin()和nums.end()作为排序范围。
最后,我们使用for循环遍历排序后的nums,并输出每个元素。
运行上述代码,输出结果为:1 2 5 8 9,表示nums已经按升序排列。
对std::vector排序
可以使用 `<algorithm>` 中的 `std::sort` 函数对 `std::vector` 进行排序,具体代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
// 对 nums 进行排序
std::sort(nums.begin(), nums.end());
// 输出排序后的结果
for (auto num : nums) {
std::cout << num << " ";
}
return 0;
}
```
输出结果为:`1 1 2 3 3 4 5 5 5 6 9`。
其中,`std::sort` 的第一个参数是要排序的序列的起始位置,第二个参数是要排序的序列的结束位置(不包含结束位置元素)。在上述代码中,`nums.begin()` 为 `std::vector` 的首元素的迭代器,`nums.end()` 为 `std::vector` 的尾元素的迭代器(注意,由于 `nums.end()` 不包含最后一个元素,所以在输出结果时不需要打印最后一个元素)。