簡體   English   中英

重新排列 std::map 中的鍵

[英]Rearrange keys in std::map

我有一個看起來像這樣的 map:

0, 1234

1, 5678

2、9012

現在,例如我刪除鍵 1 的條目,所以 map 看起來像這樣:

0, 1234

2、9012

現在我想重新排列鍵,使 map 看起來像這樣:

0, 1234

1、9012

知道怎么做嗎?

使用矢量

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    int j = 0;
    std::vector<int> v = {100, 200, 300};
    std::for_each(v.begin(), v.end(), [&j](auto const& p) {
        std::cout << "index = " << j++ << " value = " << p << std::endl;
        });

    /* Delete item at index = 1 */

    v.erase(v.begin() + 1);
    j = 0;
    std::for_each(v.begin(), v.end(), [&j](auto const& p) {
        std::cout << "index = " << j++ << " value = " << p << std::endl;
        });
}

Output

index = 0 value = 100
index = 1 value = 200
index = 2 value = 300
index = 0 value = 100
index = 1 value = 300

你想要的聽起來很不合邏輯。 鍵是唯一的,用於查找值(非常快)。 現在你想改變密鑰,這很奇怪。 您可能需要一個扁平類型的列表類型。

您應該查看std::liststd::vector 當您刪除項目時,索引會自動“更新”。

您只能通過擦除前一個元素並使用新密鑰重新插入它來做到這一點

暫無
暫無

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

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