2013-05-03 71 views
0

因此,我想根据结构中的num1对自定义对象myStructvector排序。 我有下面的代码:根据结构的元素对结构对象的向量排序 - C++

struct myStruct{ 

    int num1; 
    std::vector<int> vecStruct; 
    int num2; 

    myStruct(int n1, std::vector<int> j, int n2) : num1(n1), vecStruct(j), num2(n2) {} 

    bool operator < (const myStruct& s) const 
    { 
     return (num1 < s.num1); 
    } 
}; 

,然后我用这个排序:

sort(myVector.begin(), myVector.end()); 

其中

std::vector<myStruct> myVector; 

我试图按照these说明,但我不断收到aa编译错误:

No matching constructor for initialisation of 'myStruct'

我在MacOSX Mountain Lion上使用Xcode 4.6.2 - 这不是问题,但Xcode是什么给我这个错误

+0

您遗漏了myStruct的构造函数。 – 2013-05-03 22:08:41

回答

3

在上面介绍的代码中,您的构造函数名称与名称不匹配的结构(myStruct vs学生)。我会开始解决这个问题。

+0

我改变了,我仍然得到相同的编译错误.. – FriedRike 2013-05-04 15:29:58

2

当我测试你的代码,但改变你的结构的名称为student(鉴于这是它在结构内引用),我没有收到编译错误。

也许是这个问题?

+0

我改变了,我仍然得到相同的编译错误...我不明白它是如何工作在你的,但不是我的 – FriedRike 2013-05-04 15:30:21

+0

我可以问,你编译它?我尝试用Xcode构建它,但它不起作用。它也不是用'g ++' – FriedRike 2013-05-04 15:50:53

+0

VS Express 2012.不幸的是,我没有Xcode来测试它,但是我没有看到代码中看起来有争议的任何东西都不可交叉编译。当你更正语法时,错误只是变成'“没有匹配的构造函数来初始化'student'”'? – dlanod 2013-05-04 22:09:38