我有一个我需要插入的地图矢量。这是我的代码中给我错误的部分。请注意,RGB是一个包含3个无符号字符(红色,绿色和蓝色)的结构。当我尝试插入时,例如下面的代码中的int,我得到了这些错误:
support.cpp:231:38:错误:'我'不能出现在常量表达式中 support.cpp:231:39:错误:数组引用不能出现在常量表达式中 support.cpp:231:42:错误:' PPM :: img'不能出现在常量表达式中 support.cpp:231:46:错误:'我'不能出现在常量表达式中 support.cpp:231:47:错误:数组引用不能出现在常量表达式中 support.cpp:231:48:错误:模板参数1无效 support.cpp:231:48:错误:模板参数2无效
我尝试在互联网上搜索解决方案,但我只能通过switch语句找到此错误的实例。任何帮助将不胜感激
vector<map<int, RGB> > timesClosest;
timesClosest.resize(qcolors.size());
int counts[img.size()];
for (int j = 0; j < qcolors.size(); j++)
{
int counts[img.size()];
for (int i = 0; i < img.size(); i++)
{
counts[i] = 0;
if (indexQC[i] == j)
{
counts[i]++;
}
}
//now add this to the map
for (int i = 0; i < img.size(); i++)
{
int c = counts[i];
timesClosest[i].insert(pair<counts[i], img[i]>);
}
}
答案 0 :(得分:1)
您正在插入timesClosest
的模板参数。插入应该是
timesClosest[i].insert(std::make_pair(counts[i], img[i]));
答案 1 :(得分:0)
一个问题是,您无法使用表示元素数量的运行时表达式声明数组。
相反,请使用std::vector
。无论如何,您仍在使用它,但出于某种原因,您并未真正需要使用它:
而不是:
int counts[img.size()];
这样做:
std::vector<int> counts(img.size());