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

Posted

技术标签:

【中文标题】循环使用 set Template Class 将所有 26 个字母添加到 s【英文标题】:Loop to add all 26 letters into s using set Template Class 【发布时间】:2017-05-04 00:37:59 【问题描述】:

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

我得到的是

for(int i = 0; i < 26; i++)

     s.insert('A') + i;

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

【问题讨论】:

('A') + i -> ('A' + i). 哈哈,这很尴尬...谢谢 【参考方案1】:

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

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

【讨论】:

【参考方案2】:
for (char c = 'A'; c <= 'Z'; ++c)
    s.insert(c);

【讨论】:

【参考方案3】:

做这个:

 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;

【讨论】:

以上是关于循环使用 set Template Class 将所有 26 个字母添加到 s的主要内容,如果未能解决你的问题,请参考以下文章

循环调用同一个虚函数的开销

IntelliJ IDEA遇到Unable to parse template “Class”错误

如何将 java.util.Set 声明为 m:template 的入口参数

idea创建类报错: Unable to parse template “Class“ Error message:

Vue JS:单击时传递循环的当前对象

vue2.0 实现click点击当前li,动态切换class