c++ sort参数
时间: 2023-09-12 15:04:15 浏览: 95
C语言中的sort
在C++中,sort函数的参数是一个起始迭代器和一个结束迭代器,以及一个可选的比较函数。如果你要对一个数组进行排序,你可以使用sort函数,并传入数组的起始指针和结束指针作为参数。比如在下面的例子中,sort函数的参数是a和a+10,其中a是数组的起始指针,a+10是数组的结束指针:
```
int a = { 9, 6, 3, 8, 5, 2, 7, 4, 1, 0 };
sort(a, a+10);
```
如果你要对一个复杂的结构进行排序,你可以定义一个比较函数,并将其作为sort函数的第三个参数传入。比如在下面的例子中,sort函数的参数是tmp.begin()和tmp.end(),其中tmp是一个vector容器,存储了一些pair类型的数据。同时,我们定义了一个比较函数myfunction3,用来按照pair的第二个元素进行降序排序:
```
vector<pair<int, int>> tmp;
tmp.push_back(make_pair(1,2));
tmp.push_back(make_pair(5,4));
tmp.push_back(make_pair(6,3));
tmp.push_back(make_pair(8,5));
tmp.push_back(make_pair(9,1));
sort(tmp.begin(), tmp.end(), myfunction3);
```
在另外一个例子中,我们可以使用sort函数对一个结构体进行排序。我们定义了一个range结构体,其中包含了start和end两个成员变量。然后我们定义了一个比较函数comp,按照range的start成员进行降序排序。最后,我们使用sort函数对一个存储了range结构体的vector容器r进行排序:
```
struct range {
int start;
int end;
range() : start(0), end(0) {}
range(int a, int b) : start(a), end(b) {}
};
bool comp(range a, range b) {
return a.start > b.start;
}
vector<range> r;
r.push_back(range(10, 20));
r.push_back(range(5, 15));
r.push_back(range(30, 40));
sort(r.begin(), r.end(), comp);
```
这样,我们就可以使用sort函数来对不同类型的数据进行排序,并通过比较函数来定义排序的规则。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [C++ sort函数第三个参数的理解](https://blog.csdn.net/qq_34489443/article/details/86219772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [c++ sort函数三个参数解释](https://blog.csdn.net/qq874455953/article/details/82975218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文