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.
auto index = map.find(comp);autokeyword. The compiler already knows the type of the expressionmap.find(comp)so it will declareindexas that type. No more typos on those tedious iterator declarations.