Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无序映射具有INDIRECTION需要指针操作数_C++_C++11_Unordered Map - Fatal编程技术网

C++ 无序映射具有INDIRECTION需要指针操作数

C++ 无序映射具有INDIRECTION需要指针操作数,c++,c++11,unordered-map,C++,C++11,Unordered Map,我有以下代码: 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 }

我有以下代码:

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解决方案(int K,常数向量&A){
int count=0,size,comp=0;
无序地图;
大小=A.大小();
如果(大小==0)
返回0;
对于(int i=0;i>::在此处插入请求的'
地图。插入(A[i],i)

谁能解释一下发生了什么事


还可以使用它来编译:clang++-stdlib=libc++-std=gnu++11工作对。cpp

std::unordered\u map::insert获取一对:

map.insert ( std::pair<int,int>(A[i],i) );
map.insert(std::pair(A[i],i));
双参数版本需要一个迭代器,您在这里不需要它。

的双参数形式需要一对迭代器(插入一个范围),或者一个迭代器(作为插入元素位置的提示)和一个元素

您应该使用
std::pair
在具有特定键的处插入值:

map.insert(std::make_pair(A[i],i));

map.insert(A[i],i)
上的错误是因为它希望您插入容器的
value\u type
(一对
key/value
项)。您使用两个参数调用
insert()
,在这种情况下,唯一匹配的重载不是您想要的

你可以说:

map[A[i]] = i;

map.insert(std::make_pair(A[i], i));
map.emplace(A[i], i);