为什么我的std :: set没有存储唯一值?

时间:2017-08-26 16:11:29

标签: c++ string set

如果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]);

它不起作用。

1 个答案:

答案 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;
}