簡體   English   中英

std :: map插入另一個地圖

[英]std::map insert another map

我遵循了這個答案,並編寫了以下代碼。 但是它給出了下面的編譯錯誤。 我認為這是因為make_pair無法接受另一個make_pair作為參數。 那有什么選擇呢?

error: no matching function for call to ‘std::map<std::basic_string<char>, std::map<float, int>
>::insert(std::pair<std::basic_string<char>, std::pair<double, int> >)’

下面的代碼

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, std::map<float, int> > map1;
    std::string string1 = "alpha";
    map1.insert(std::make_pair(string1, std::make_pair(1.1, 1)));
    return 0;
}

您用不是地圖的東西來初始化“對”的后半部分。

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, std::map<float, int> > map1;
    std::string string1 = "alpha";
    std::map<float,int> mapsub;
    mapsub.insert(std::make_pair(1.1, 1));
    map1.insert(std::make_pair(string1, mapsub));
    return 0;
}

或者:

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, std::map<float, int> > map1;
    std::string string1 = "alpha";
    map1.insert(std::make_pair(string1, std::map<float,int>{std::make_pair(1.1,1)}));
    return 0;
}

或者,您可以使用[]運算符,如下所示:

map1[string1][1.1] =  1;

暫無
暫無

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

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