說我有字符串的向量的列表:排序向量的列表字典順序根據優先級
[「一」,「C」,「鴨」]
[「一」,「一個」, 「F」]
[ 「蜂」, 「S」, 「XY」]
[ 「b」, 「一」, 「一個」]
欲向量排序通過這種方式:
首先按照索引0處的元素按照字典順序排序,如果存在聯繫,則將按照索引1處的元素按字典順序確定,如果存在另一個聯繫,則將按照元素的字典順序確定在索引2
所以上面的列表將被排序之後,如下所示:
[ 「一」, 「一個」, 「F」]
[ 「一」, 「C」, 「duck」]
[「b」,「a」,「a」]
[「bee」,「s」,「xy」]
如何根據上面的描述來實現標準庫sort()函數來編寫一個向量列表的排序方法?我正在使用C++。 謝謝。
一旦知道每個向量的長度,就不難編寫比較函數。但是如果我不知道向量的長度(但我總是知道它們的長度相同)呢? 的長度爲3的向量比較功能:
bool CompareVector(vector<string> first, vector<string> second){
if (first[0] < second[0])
return true;
if (first[1] < second[1])
return true;
if (first[2] < second[2])
return true;
return false;
}
因此,對於長度爲n的向量,將有N個if語句。但是,我怎樣才能保持if語句的數量變量?
如何:
bool CompareVector(vector<string> first, vector<string> second){
for (int i=0; i< first.size(); i++)
if (first[i] < second[i])
return true;
return false;
}
然後我就可以調用標準排序功能:
sort(vector<vector<string> >input.begin(), vector<vector<string> >input.end(), CompareVector())
將這項工作?謝謝。
首先,你需要一個用於'std :: string'的自然排序比較器。那很簡單。 –
我的意思是我不想重寫排序算法,比如合併排序,因爲它已經內置了。但不知何故,我想在我的方法中實現它。 – user3213711
我的意思是,我可能需要定義向量的排序。然後我可以通過傳入順序來調用標準庫中的sort()函數。但是,我怎樣才能定義代碼中的順序?矢量的長度不一定總是3.但是所有矢量的長度都是相同的。 – user3213711