C ++无法从初始化列表转换为std :: pair

时间:2017-08-28 17:32:22

标签: c++-cli

我有一个名为TestFunction的函数,我已经为这个问题简化了......但实际上,我收到的错误是<function-style-cast> cannot convert from 'initializer list' to std::pair<int, int>。这是我的简化功能:

#include <iostream>
#include <map>

void MyClass::TestFunction(cli::array<int>^ ids){

    std::multimap<int, int> mymap;
    int count = ids->Length;

    for (int i = 0; i < count; ++i) {
        //fill in the multimap with the appropriate data key/values
        mymap.insert(std::make_pair((int)ids[i], (int)i));
    }
}

正如您所看到的,它是一个非常基本的功能(简化后),但是当我尝试将数据插入到multimap中时出现错误。有谁知道为什么?

2 个答案:

答案 0 :(得分:0)

我要么

mymap.insert(std::make_pair((int)ids[i], (int)i));

mymap.emplace((int)ids[i], (int)i);

答案 1 :(得分:0)

我正在建立@CoryKramer的答案。看来如果我创建一个int类型的临时变量,然后将其传递给multimap.insert()函数......错误是固定的。这是新功能:

#include <iostream> 
#include <map>

void MyClass::TestFunction(cli::array<int>^ ids){

    std::multimap<int, int> mymap;
    int count = ids->Length;

    for (int i = 0; i < count; ++i) {
        //fill in the multimap with the appropriate data key/values
        int ff = (int)ids[i];
        mymap.insert(std::make_pair(ff, (int)i));
    }
} 

出于好奇......有谁知道为什么会这样?