2014-01-30 94 views
0

Iam新增了vC++。 我想用地图插入一个阵列到地图::插入件()Visual studio 2012 map :: insert问题

int _tmain(int argc, _TCHAR* argv[]) {

int arr[3] ={0,1,2}; 
map <int, int[3]> myMap; 
myMap.insert(std::make_pair(1,arr)); 

返回0;

}

当我执行在视觉工作室2012荫得到

enter code here错误C2664的代码:“的std ::对< _Ty1,_Ty2>的std :: _树< _Traits> ::插入(STD ::对& &):性病::对< _Ty1,_Ty2>”无法转换从参数2 '' 到 '的std ::对< _Ty1,_Ty2> & &'

能否请你告诉我如何摆脱这个错误..

在此先感谢。

回答

0

您正试图在想要插入地图的地方插入一对。试试下面的例子..

#include <iostream> 
    #include <map> 

    int main() 
    { 
    std::map<char,int> mymap; 

    // first insert function version (single parameter): 
    mymap.insert (std::pair<char,int>('a',100)); 
    mymap.insert (std::pair<char,int>('z',200)); 

    std::pair<std::map<char,int>::iterator,bool> ret; 
    ret = mymap.insert (std::pair<char,int>('z',500)); 
    if (ret.second==false) { 
    std::cout << "element 'z' already existed"; 
    std::cout << " with a value of " << ret.first->second << '\n'; 
    } 

    // second insert function version (with hint position): 
    std::map<char,int>::iterator it = mymap.begin(); 
    mymap.insert (it, std::pair<char,int>('b',300)); // max efficiency inserting 
    mymap.insert (it, std::pair<char,int>('c',400)); // no max efficiency inserting 

    // third insert function version (range insertion): 
    std::map<char,int> anothermap; 
    anothermap.insert(mymap.begin(),mymap.find('c')); 

    // showing contents: 
    std::cout << "mymap contains:\n"; 
    for (it=mymap.begin(); it!=mymap.end(); ++it) 
    std::cout << it->first << " => " << it->second << '\n'; 

    std::cout << "anothermap contains:\n"; 
    for (it=anothermap.begin(); it!=anothermap.end(); ++it) 
    std::cout << it->first << " => " << it->second << '\n'; 

    return 0; 
    }