-1

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

我所拥有的是

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

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

4

3 回答 3

1

为了便携性,不要假设大写字母有连续的编码;存在您的代码无法正常工作的字符编码。反而:

const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < 26; ++i)
    s.insert(letters[i]);
于 2017-05-04T01:19:36.417 回答
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;
于 2017-05-04T01:12:15.607 回答
0
for (char c = 'A'; c <= 'Z'; ++c)
    s.insert(c);
于 2017-05-04T01:14:14.310 回答