2013-05-03 75 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