c++ - 如何对结构C++的 vector 进行排序

标签 c++ sorting vector struct

<分区>

我正在尝试对 struct 的 vector 进行排序,但它以错误结束。我试着按照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;
}

最佳答案

不像 intfloat 等内置类型,您必须为 struct reg 定义比较函数,即您的规则希望元素在排序时跟随。像这样:

bool my_compare(const struct reg &x, const struct reg &y)
{
    // define how to compare x,y here
}

然后,您可以传递此函数对 vector 进行排序:

std::sort (a.begin(), a.end(), my_compare);  

关于c++ - 如何对结构C++的 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22460245/

相关文章:

c++ - BST 代码不适用于大数字

c++ - fann_set_bit_fail_limit() 未能实际设置位失败限制,迫使我手动编辑 ANN 文件

c:段错误(选择排序)

C++ - 将一个 Vector 附加到另一个 Vector,并删除重复项?

c++ - 关于反序列化器弹出函数的模板化特化的歧义

c++ - 将子序列问题的复杂性从指数降低到多项式?

javascript - 如果第一个 js 出现不止一次,则按字母顺序对 2 个属性进行排序

c# - 自定义 Treeview 的排序

python - 计算python中两个向量(词袋)之间的欧氏距离

c++ - 函数内的 STL 容器何时将其数据保存在 C++ 中?