如何对结构体中的向量进行排序
How to sort vector of struct C++
我试图对struct
的向量进行排序,但它以错误结束。我试着根据c++参考做,但我不知道问题在哪里。有人能帮帮我吗?
#include <cstdlib>
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/*
*
*/
struct reg{
string name;
string addr;
};
int main(int argc, char** argv) {
vector <reg> a;
reg newReg = { "John", "Street1"};
a.push_back(newReg);
reg newReg2 = { "Mike", "Street2"};
a.push_back(newReg2);
std::sort (a.begin(), a.end());
return 0;
}
与int
, float
等内置类型不同,您必须为struct reg
定义比较函数,即您希望元素在排序时遵循的规则。这样的:
bool my_compare(const struct reg &x, const struct reg &y)
{
// define how to compare x,y here
}
然后,你可以传递这个函数来对向量进行排序:
std::sort (a.begin(), a.end(), my_compare);
您必须重载比较操作符(小于,事务)或提供自定义比较函数。
您需要告诉std::sort是什么使结构体的一个实例"小于"该结构体的另一个实例。
换句话说,如果我给你两个充满数据的结构体的实例,然后问你"哪个放在另一个前面?",你的答案是什么?您用来得到答案的规则是您需要编写的代码,并给出std::sort的3个参数版本。
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序