循环使用 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 的入口参数