簡體   English   中英

對std :: map使用多個鍵值C ++

[英]using multiple keyvalues for std::map C++

嗨,我正在嘗試編寫一個函數,該函數從文件讀取數據,然后將其保存在內存中。 該存儲器將需要識別ax和ay值。 它可能不是線性的,不同的x和y值之間可能會有很大的跳躍,並且值的數量未知,這排除了使用多維數組的可能性。

我想使用std :: map,因為它可以滿足我的需要,但是它不支持多個鍵值。 我還能用什么來存儲數據,或者有什么方法可以合並X和Y值以便可以在地圖容器中使用?

制作一對xy值,並將其用作鍵:

std::map<std::pair<int, int>, whatever>

請注意,如果按順序遍歷地圖,這會將x值視為比y值更重要。 如果希望y值更大,則希望將它們放在對中的第一位。

您應該使用std::pair作為地圖的鍵:

std::map<std::pair<int, int>, value_type> m;

您可以使用以下方法插入地圖:

m[std::make_pair(0, 0)] = some_value;

如果您不關心元素的順序,並希望更快地檢索和插入,請嘗試使用std::unordered_map

盡管您可以使用其他人建議的std :: pair,但我會認真考慮制作一個簡單的類,其中包含密鑰的數據成員。 它提高了可讀性,並且如果需要,還可以更容易地使用3rd,4th ...成員對其進行擴展。

如果從std :: pair開始,然后要添加第三個元素,則可能會轉而使用std :: tuple,但這會導致代碼無法讀取。

只需創建一個鍵類,然后為其提供一個體面的構造函數(每個數據成員一個參數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM