C++ 写一个从小到大排序vector中元素的函数
时间: 2024-02-28 17:53:16 浏览: 31
我已经在之前的回答中给出了使用 `std::sort` 对 `vector` 中元素进行从小到大排序的 C++ 实现,这里再重新给出一遍:
```c++
#include <vector>
#include <algorithm>
void sortVector(std::vector<int>& vec) {
std::sort(vec.begin(), vec.end());
}
```
调用方式:
```c++
std::vector<int> vec = {5, 3, 8, 4, 2};
sortVector(vec);
```
注意,这里需要传入 `vector` 的引用,否则排序后的结果不会被保存。
相关问题
使用C++对这个数据结构定义一个从小到大的排序函数。
假设数据结构的类型为 `struct Node`,其中包含一个整型变量 `val`,则可以定义如下的排序函数:
```c++
bool cmp(const Node& a, const Node& b) {
return a.val < b.val;
}
```
这个函数接受两个 `Node` 类型的参数 `a` 和 `b`,比较它们的 `val` 成员变量的大小,如果 `a` 的 `val` 小于 `b` 的 `val`,则返回 `true`,否则返回 `false`。这个函数可以作为 `sort` 函数的第三个参数,实现对一个存储了 `Node` 类型元素的容器,例如 `vector<Node>`,从小到大排序的功能。
例如:
```c++
vector<Node> v;
// ... 将元素加入到 v 中 ...
sort(v.begin(), v.end(), cmp);
```
c++中的vector类中有没有遍历一个vector数组,使整个数组从小到大或从大到小排布的函数?
C++ 中的 vector 类提供了多种方法来遍历和操作 vector 数组,其中包括可以将整个数组从小到大或从大到小排布的函数。
例如,要将一个 vector<int> 数组从小到大排布,可以使用 C++ 标准库中的 sort 函数。具体代码如下:
```c++
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {5, 2, 4, 3, 1};
// 从小到大排序 vector 数组
std::sort(v.begin(), v.end());
// 遍历排序后的 vector 数组
for (auto i : v) {
std::cout << i << " ";
}
return 0;
}
```
上述代码中,通过调用 `std::sort(v.begin(), v.end())` 将 vector 数组从小到大排序。然后使用 for 循环遍历排序后的数组输出元素即可。
如果要将 vector 数组从大到小排布,则可以使用 `std::greater<int>()` 作为第三个参数调用 `std::sort()` 函数。例如:
```c++
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {5, 2, 4, 3, 1};
// 从大到小排序 vector 数组
std::sort(v.begin(), v.end(), std::greater<int>());
// 遍历排序后的 vector 数组
for (auto i : v) {
std::cout << i << " ";
}
return 0;
}
```
上述代码中,通过将 `std::greater<int>()` 作为第三个参数调用 `std::sort()` 函数,将 vector 数组从大到小排序。然后使用 for 循环遍历排序后的数组输出元素即可。