版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
练习3.41 编写一段程序,用整型数组初始化一个vector
对象。
#include<iterator>
#include<vector>
#include<iostream>
using namespace std;
int main()
{
int arr[] = { 1,2,3,4,5 };
vector<int> vec(begin(arr), end(arr));
for (auto i : vec)
cout << i << " ";
cout << endl;
return 0;
}
练习3.42 编写一段程序,将含有整数元素的vector
对象拷贝给一个整型数组。
#include<iterator>
#include<vector>
#include<iostream>
using namespace std;
int main()
{
int arr[] = { 1,2,3,4,5 };
vector<int> vec(begin(arr), end(arr));
int arr2[5] = {};
for (int i = 0; i < 5; i++)
{
arr2[i] = vec[i];
cout << arr2[i] << " ";
}
cout << endl;
return 0;
}
练习3.43 编写3个不同版本的程序,令其均能输出ia
的元素。版本1使用范围for
语句管理迭代过程;版本2和版本3都使用普通for语句,其中版本2要求使用下标运算符,版本3要求使用指针。此外,在所有3个版本的程序中都要直接写出数据类型,而不能使用类型别名、auto
关键字和decltype
关键字。
#include<iostream>
using namespace std;
int main()
{
int cnt = 1;
int ia[3][4];
for (auto p = ia; p != ia + 3; p++)
for (auto q = *p; q != *p + 4; q++)
*q = cnt++;
for (const int(&p)[4] : ia)
for (int q : p)
cout << q << " ";
cout << endl;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
cout << ia[i][j] << " ";
cout << endl;
for (int(*p)[4] = ia; p != ia + 3; p++)
for (int *q = *p; q != *p + 4; q++)
cout << *q << " ";
cout << endl;
return 0;
}
练习3.44 改写上一个练习中的程序,使用类型别名来代替循环控制变量的类型。
#include<iostream>
using namespace std;
int main()
{
int cnt = 1;
int ia[3][4];
for(auto p = ia; p != ia+3; p++)
for (auto q = *p; q != *p+4; q++)
*q = cnt++;
using int_array = int[4];
typedef int I;
for (int_array *p = ia; p != ia + 3; p++)
for (I *q = *p; q != *p + 4; q++)
cout << *q << " ";
cout << endl;
return 0;
}
练习3.45 再一次改写程序,这次使用auto关键字。
练习3.45 再一次改写程序,这次使用auto关键字。
#include<iostream>
using namespace std;
int main()
{
int cnt = 1;
int ia[3][4];
for(auto p = ia; p != ia+3; p++)
for (auto q = *p; q != *p+4; q++)
*q = cnt++;
for (auto p = ia; p != ia + 3; p++)
for (auto q = *p; q != *p + 4; q++)
cout << *q << " ";
cout << endl;
return 0;
}