如果std :: set只存储唯一值,那么为什么它不能用于下面的代码呢?
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
set <string> s1;
set <string>::iterator it;
getline(cin, s);
s1.insert(s);
for(it = s1.begin(); it != s1.end(); it++)
cout<<*it;
return 0;
}
输入:The quick brown fox jumps over the lazy dog
输出:The quick brown fox jumps over the lazy dog
还有其他方法可以存储所有独特的字母/元素吗?我们也可以储存空间吗?
编辑:正如Robinson所指出的那样,我应该打破并存储字符串s,但是当我这样做时,就像迭代字符串s并插入set s1一样,它显示错误。
for(int i = 0; i < s.length(); i++)
s1.insert(s[i]);
它不起作用。
答案 0 :(得分:1)
#include <string>
#include <set>
#include <sstream>
#include <iostream>
//#define USE_CIN // uncomment to get input from console
#ifdef USE_CIN
using std::cin;
#else
std::stringstream cin{"The quick brown fox jumps over the lazy dog"};
#endif
int main() {
std::string s;
std::set<char> s1; // set of chars
getline(cin, s); // get all characters into string s
for(auto c : s)
s1.insert(c); // insert all characters
for(auto c : s1)
std::cout << c; // print all characters
return 0;
}