【发布时间】:2016-04-12 05:31:46
【问题描述】:
我得到这个编译错误:
错误:一元“
*”的类型参数无效(有“int”)_M_insert_unique_(end(), *__first);
我尝试过使用(*cols_it).first 和(*cols_it).second 以及我能想到的所有其他排列,但我无法编译。我应该写什么?
以下是部分代码:
#include <map>
#include <vector>
using std::map;
using std::vector;
void setZeroes(vector<vector<int> > &A) {
map<int,int> rows;
map<int,int> cols;
for (unsigned int x = 0; x < A[0].size(); x++) {
for (unsigned int y = 0; y < A.size(); y++) {
if (A[x][y] == 0) {
rows.insert(y,y); // error reported here
cols.insert(x,x);
}
}
}
map<int,int>::iterator rows_it = rows.begin();
map<int,int>::iterator cols_it = cols.begin();
while (rows_it != rows.end()) {
for (unsigned int i = 0; i < A[0].size(); i++) {
int val = rows_it->second;
A[val][i] = 0;
}
rows_it++;
}
while (cols_it != cols.end()) {
for (unsigned int i = 0; i < A.size(); i++) {
int val = cols_it->second;
A[i][val] = 0;
}
cols_it++;
}
}
【问题讨论】:
-
顺便说一句,也许您宁愿使用 std::set 而不是在地图中存储成对的“x -> x”?
标签: c++ dictionary iterator