前言
紀錄如何處理C++中以struct建構的vector array的排序問題
用法
在C++中,Vector幾乎完全取代C裡面的array型態
除了它本身含有許多功能可以直接取用,像是基本的begin()
, end()
, size()
, max_size()
, empty()
, swap()
等等之外,它能直接與C++的STL函式庫配合,簡直是太強大了,以前寫C需要硬刻的Sorting、Linked list、BST或是hash,在C++中都變得容易許多!(前提是你必須有資料結構以及演算法的基本概念,否則也只是瞎用亂用啦)
因為很少寫C++,導致常常需要用到Vector做處理時,卻忘了有哪些library可以用 = =
Case描述:
需要用到Struct建構資料,用Vector型態建立一個Array,並且根據其中一個element做排序
需要include的函示庫:
1 |
宣告struct
1 | struct Item{ |
宣告以struct型態建構的vector array
1 | vector<Item> items(n); |
讀取資料進來
這個Case是知道要讀幾筆,所以就用老方法index做了,應該用iterator
比較好OTZ
1 | for (int i = 0; i < n; i++){ |
如果對排序有特殊需求,需要自己寫一個簡易的compare function,更複雜一點的需要創一個Template
1 | bool myCompare(Item i1, Item i2){ |
直接用C++提供的sort函式做sorting
需要注意的是最後一個參數放的是自己的比較function,所以最後結果會是由大到小排好的
1 | sort(items.begin(), items.end(), myCompare); |