我正在下週學習考試,並且在我的書中遇到了一個我無法工作的問題。說假設set<char> s;
現在被聲明寫一個循環來將所有26個字母插入到s中。Loop將所有26個字母添加到s中使用集合Template Template
我有什麼是
for(int i = 0; i < 26; i++)
{
s.insert('A') + i;
}
類似的東西來,這將用於陣列我相信工作,但不是這個模板類。 我知道我不必插入每個字母我只是不知道我可以如何運行字母表。
我正在下週學習考試,並且在我的書中遇到了一個我無法工作的問題。說假設set<char> s;
現在被聲明寫一個循環來將所有26個字母插入到s中。Loop將所有26個字母添加到s中使用集合Template Template
我有什麼是
for(int i = 0; i < 26; i++)
{
s.insert('A') + i;
}
類似的東西來,這將用於陣列我相信工作,但不是這個模板類。 我知道我不必插入每個字母我只是不知道我可以如何運行字母表。
對於便攜性,不要以爲大寫字母具有連續的編碼;有代碼無法正常工作的字符編碼。相反:
const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < 26; ++i)
s.insert(letters[i]);
@songyuanyao - 哎呀,這在C但沒有C++。固定。 –
將此:
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);
'('A')+ i'''('A'+ i)'。 – bipll
大聲笑這是尷尬的...謝謝 –