문자열의 모든 문자가 고유한지 여부를 결정하는 프로그램을 작성하고 있습니다. 나는 unordered_set을 사용하여 이것을하려고합니다.std :: unordered_set :: find의 결과를 검사하는 코드가 컴파일되지 않습니다.
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
bool uniqueChars(string word) {
unordered_set<char> set;
for (int i = 0; i < word.length(); i++) {
auto character = set.find(word[i]);
// if word[i] is found in set then not all chars are unique
if (character == word[i]) {
return false;
}
//else add word[i] to set
else {
set.insert(word[i]);
}
}
return true;
}
int main() {
string word;
getline(cin, word);
bool result = uniqueChars(word);
return 0;
}
그것은 나에게이 오류주고있다 :
|15|error: no match for 'operator==' (operand types are 'std::__detail::_Node_iterator' and 'char')|
을 내가 그 그 문자가 단어 [i]는 비교할 수 없습니다 의미 생각하지만, 잘 모르겠어요 여기 내 코드입니다.
어떻게하면됩니까?
고마워요! 그것은 작동하지만 set.end()는 무엇을합니까? 그것은 세트를 통해 반복합니까? – CheetahBongos
@CheetahBongos 아니요, [it] (http://en.cppreference.com/w/cpp/container/unordered_set/end)은 컨테이너의 마지막 요소 뒤에 오는 요소에 반복기를 반환하기 만하면됩니다. 자리 표시 자. – songyuanyao