我有一个名为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中时出现错误。有谁知道为什么?
答案 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));
}
}
出于好奇......有谁知道为什么会这样?