我只是想知道,如果它是一個好主意,讓喜歡用一對索引STL映射是一個好主意嗎?
std::map< std::pair<int,int>,std::string >
的數據結構只是想知道如何對將內部命令...:S
謝謝!
我只是想知道,如果它是一個好主意,讓喜歡用一對索引STL映射是一個好主意嗎?
std::map< std::pair<int,int>,std::string >
的數據結構只是想知道如何對將內部命令...:S
謝謝!
的對將使用所述一對operator<
(默認比較操作std::map
),其
返回訂購:
x.first < y.first || (!(y.first < x.first) && x.second < y.second)
(C++ 03,20.2.2/6)
請注意,它可能會使用一對作爲映射關鍵點,特別是使用映射迭代器(it->first.first
獲取密鑰對的第一個元素看起來很荒謬)時會引起混淆。但是在某些情況下,它可能比爲密鑰創建一個全新的結構更簡單。
和所有的東西一樣,小心使用,如果它不直截了當並且容易理解,最好找到一種不同的方式來做到這一點。
您可以。在我看來,儘管你應該做一些比這更富有表現力的事情,因爲std::pair
並不意味着這一點。例如,如果你想通過自己的哈希存儲在地圖的字符串,那麼你可以這樣做:
struct Hash {
int hash_low;
int hash_high;
bool operator<(const Hash& other) const;
};
然後用map<Hash,string>
而非map<pair<int,int>,string>
。
也許一個簡單的「typedef對
這不是效率,它的表現力。不管你爲什麼工作:一個'typedef',一個'struct',不管。當你編寫一個庫時,你使用'pair'這樣的東西,而不是具體的,單一用途的代碼。 – wilhelmtell 2010-04-23 06:06:43
如果你正在尋找散列表的兩個索引,那麼你應該看看Boost::multiindex容器。
至於回答你的問題,爲什麼不解決別人指出的限制。我一直在尋求任何清晰,易於使用,並且適合手頭問題的解決方案。
感謝您的回覆! – jm1234567890 2010-04-23 02:22:03