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

Loop to add all 26 letters into s using set Template Class

我正在为下周的考试复习,我在书上遇到一道题,我无法开始工作。假设现在声明 set<char> s; 编写一个循环将所有 26 个字母插入 s.

我得到的是

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

我认为与此类似的东西适用于数组,但不适用于此模板 class。 我知道我不必插入每个字母我只是不知道如何 运行 通过字母表。

做这个:

 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;
for (char c = 'A'; c <= 'Z'; ++c)
    s.insert(c);

为了可移植性,不要假设大写字母有连续的编码;有些字符编码会使您的代码无法正常工作。相反:

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