Unordered_map具有间接要求指针操作数
Unordered_map has indrection requires pointer operand
我有这样的代码:
int solution(int K, const vector<int> &A) {
int count=0,size,comp=0;
unordered_map<long,long> map;
size = A.size();
if(size==0)
return 0;
for(int i=0;i<size;i++){
map.insert(A[i],i); //error here
}
for(int i=0;i<size;i++){
comp = K-A[i];
unordered_map<long,long>::const_iterator index = map.find(comp);
if(index == map.end())
continue;
else if(index->second != i){
count++;
}
}
cout << "final count: " << count << endl;
return count;
}
似乎不明白它为什么抱怨。错误如下:
间接要求指针操作数('int'无效)__table_.__insert_unique (* __first);
和
函数模板特化'std::__1::unordered_map, std::__1::equal_to,Std::__1::allocator>>::insert'请求在这里map.insert([我],我),
谁能给我解释一下这是怎么回事?clang++ -stdlib=libc++ -std=gnu++11 workingpairs.cpp您在map.insert(A[i],i)
上的错误是因为它希望您插入容器的value_type
(key/value
对)。您正在使用两个参数调用insert()
,并且在这种情况下唯一匹配的重载不是您想要的。
你可以说:
map[A[i]] = i;
或
map.insert(std::make_pair(A[i], i));
或
map.emplace(A[i], i);
std::unordered_map::insert接受一对参数:
map.insert ( std::pair<int,int>(A[i],i) );
双参数版本接受一个迭代器,这里不需要。
std::unordered_map::insert的双参数形式要么需要一对迭代器(用于插入范围),要么需要一个迭代器(作为插入元素位置的提示)和一个元素。
您应该使用std::pair
来插入具有特定键的值:
map.insert(std::make_pair(A[i],i));
相关文章:
- 如果我在指针中使用 ++ 操作数,我的值就会出错
- 错误:"->"的基本操作数具有非指针类型"const"
- 类指针和类指针指向二进制运算符+的类型无效的操作数
- '->' 的基本操作数具有非指针类型'QStandardItemModel'
- '->' 的基本操作数具有非指针类型
- 当分配运算符的操作数左操作数时,为什么数组名称不腐烂到指针
- "->"的基本操作数具有非指针类型错误
- "->"的基本操作数具有非指针类型
- 解析指向位操作数 C++ 的无符号 char 指针
- 编译器错误,链表:错误:"->"的基本操作数具有非指针类型"IntNodeType"
- 错误:"*"的操作数必须是指针
- 基操作数具有非指针类型,但它是一个指针
- C++ 指针算术。没有运算符"+" 匹配这些操作数
- 基本操作数具有非指针类型 G++ 编译器错误
- 如果加法表达式的第一个操作数可转换为指针和整数,则选择哪个转换
- 间接操作需要指针操作数
- LLVM:创建一个带有空指针操作数的CallInst
- Unordered_map具有间接要求指针操作数
- 间接寻址需要指针操作数和预期的表达式错误
- 无法解决错误:间接寻址需要指针操作数("int"无效)