【问题标题】:Loop to add all 26 letters into s using set Template Class循环使用 set Template Class 将所有 26 个字母添加到 s
【发布时间】: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).
  • 哈哈,这很尴尬...谢谢

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


【解决方案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;
      

      【讨论】:

        猜你喜欢
        • 2016-02-23
        • 2019-12-11
        • 2016-09-27
        • 1970-01-01
        • 2016-03-09
        • 2017-06-13
        • 1970-01-01
        • 1970-01-01
        • 2022-08-17
        相关资源
        最近更新 更多