【c++11】范围for循环

来源:互联网 发布:linux切换到指定目录 编辑:程序博客网 时间:2024/06/14 10:31

参考:http://blog.csdn.net/aspnet_lyc/article/details/30971195

#include <iostream>#include <map>#include <vector>#include <string>#include <typeinfo>#include <cassert>using namespace std;struct Test{int i;int j;};int main(){map<string, int> ms;ms.insert(make_pair("a", 1));ms.insert(make_pair("b", 2));ms.insert(make_pair("c", 3));ms.insert(make_pair("d", 4));// for(元素类型 元素变量名:容器变量名)for (const auto& element: ms){assert(typeid(element) == typeid(map<string, int>::value_type));//assert(typeid(element) == typeid(pair<string, int>)); // false!assert(typeid(element) == typeid(pair<const string, int>));cout << typeid(element).name() << endl; // print typecout << element.first << ":" << element.second << endl;}int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};for (const auto& element: a){assert(typeid(element) == typeid(int)); cout << element << ends;}cout << endl;vector<int> v(a, a+10);for (auto element: v){assert(typeid(element) == typeid(int)); cout << element << ends;}cout << endl;char str[10] = "Hello";for (const auto& element : str){assert(typeid(element) == typeid(char)); cout << element; // Hello}cout << endl;string s = "Hello";for (const auto& element : s){assert(typeid(element) == typeid(char)); cout << element;}cout << endl; vector<Test> vTest(10);for (const auto& element: vTest){assert(typeid(element) == typeid(Test)); cout << element.i << "," << element.j << ends; // 0,0 ...}cout << endl;// Test t; // 0,0// Test t1(10, 2); // error: 无此构造函数//Test test[10] = { 0,1,2,3 };    // 初始化:test[0]:i:0,j:1; test[1]:i:2,j:3; 其他元素:0,0Test test[] = { 0,1,2,3 };// 数组长度为2,初始化:test[0]:i:0,j:1; test[1]:i:2,j:3;for (const auto& element: test){assert(typeid(element) == typeid(Test)); cout << element.i << "," << element.j << ends; // 0,1 2,3}cout<<endl;return 0;}



0 0