C++11ノート(二):forサイクル

5365 ワード

まず肯定的なのは、私はタイトル党ではありません。
C+11のforサイクルは確かにC+98と違っているところがありますか?それとも先にコードを書きますか?
1 int test_arr[] = { 1, 2, 3, 4, 5 };

2 for (int x : test_arr)

3 {

4     std::cout << x << std::endl;

5 }
JavaのforサイクルとC〓のforeachと似ていますが、JavaとC〓のforサイクルは読み取り専用です。C++のは読み書きができます。上のコードをこのように修正します。
1 for (int &x : test_arr)

2 {

3     x = 8;

4 }
このように配列中の要素は全部8です。JavaとC〓は修正が許されません。
このような良いものは確かに欠かせません。std::vector、std::map、std::setという三つの神器です。ディズエ代機のモデルは当時は一つのデザインモードでした。今は直接言語に集積しています。また一つの秀逸な操作の手段が足りません。(へへへ。)
std::vector<int> test_vector;

test_vector.push_back(6);

test_vector.push_back(7);

test_vector.push_back(8);

test_vector.push_back(9);

test_vector.push_back(10);

for (int x : test_vector)

{

    std::cout << x << std::endl;

}



std::map<std::string, std::string> test_map;

test_map.insert(std::pair<std::string, std::string>("  ", "    "));

test_map.insert(std::pair<std::string, std::string>("  ", "    "));

test_map.insert(std::pair<std::string, std::string>("   ", "    "));



for (std::pair<std::string, std::string> test_pair : test_map)

{

    std::cout << test_pair.first << std::endl;

    std::cout << test_pair.second << std::endl;

}



std::set<int> test_set;

test_set.insert(16);

test_set.insert(17);

test_set.insert(18);

test_set.insert(19);

test_set.insert(20);

for (int x : test_set)

{

    std::cout << x << std::endl;

}
 
もう一つのポイントは、std:vectorは読み書きができますが、std:mapとstd:setは読み取り専用です。コンサートを宣言しました。
余計なことを言ってもいいですか?弱くて聞いてください。
また、「ソウ」シリーズが大好きです。std:map例の文字列を無視してください。
 
——————————————————
4-23 9:43追加:
std:stingもいいです。コードは入れません。