循环使用set Template Class将所有26个字母添加到s中

时间:2017-05-04 00:38:00

标签: c++ for-loop set template-classes

我下周要去考试,我在书中遇到一个问题,我无法上班。说假设set<char> s;现在被声明写一个循环,将所有26个字母插入s。

我得到的是

for(int i = 0; i < 26; i++)
{
     s.insert('A') + i;
}

类似于此的东西适用于我相信的数组,但不适用于此模板类。 我知道我不必插入每封信,我只是不知道如何通过字母表。

3 个答案:

答案 0 :(得分:1)

为了便于携带,不要认为大写字母具有连续编码;有代码无法正常工作的字符编码。代替:

const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < 26; ++i)
    s.insert(letters[i]);

答案 1 :(得分:0)

制作本:

 s.insert('A') + i;

作为

 s.insert('A' + i);

 s.insert(65 + i);   // 'A' value in ASCII table is 65

或由user31264回答

for (char c = 'A'; c <= 'Z'; ++c)
    s.insert(c);

您可以使用以下方法打印所有元素进行测试:

for (auto e:s)
    cout << e;

答案 2 :(得分:0)

for (char c = 'A'; c <= 'Z'; ++c)
    s.insert(c);