Domanda

I have this code:

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[A[i]] = i;
  }

  for(int i=0;i<size;i++){
      comp = K-A[i];
      unordered_map<long,long>::const_iterator index = map.find(comp); //error here
      if(index == map.end())
          continue;
      else{
          count++;
      }
  }
  cout << "final count: " << count << endl;
  return count;    
}

I'm getting an error for invalid operands and am unable to figure out what I'm doing wrong. I've tried switching iterators but it also might be my compiler. I'm using this to compile:

clang++ -stdlib=libc++ -std=gnu++11 workingpairs.cpp

My errors are: expected ';' at end of declaration unordered_map::const_iterator index = map.find(comp);

indirection requires pointer operand ('int' invalid) __table_.__insert_unique(*__first);

in instantiation of function template specialization 'std::__1::unordered_map, std::__1::equal_to, std::__1::allocator > >::insert' requested here

Any insight/help would be appreciated!

EDIT:

I've gone back and fixed the error.

È stato utile?

Soluzione

You missed :: in below statement

unordered_map<long,long>const_iterator

should be:

unordered_map<long,long>::const_iterator
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top