3.34:假定P1和P2指向同一个数组中的元素,则下面程序的功能是什么?什么情况下非法?
P1+=P2-P1;
功能是让p1指向目前所指元素后第p2-p1个元素。只有当p1为常量指针是,才非法。
3.35:编写程序,利用指针将数组中元素置为零。
3.36:编写程序,比较两个数组是否相等,比较2个vector是否相等。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int p = 0,q=0;
constexpr size_t i = 5;
int a[i] = { 1,2,3,4,5 }, b[i] = { 1,3,4,5,6 };
if (sizeof(a) != sizeof(b))
cout << "arrays are not equal!"<<endl;
else
{
for (int t = 0; t != i; t++)
{
if (a[t] != b[t])
p++;
}
}
if (p == 0)
cout << "arrays are equal!" << endl;
else
cout << "arrays are not equal!" << endl;
vector<int> p1{ 1,2,3,4,5 }, p2{1,3,4,5,6};
if(p1.size()!=p2.size())
cout<<"vectors are not equal!" << endl;
else
{
vector<int>::iterator ip1 = p1.begin(), ip2 = p2.begin();
for (decltype(p1.size()) i = 0; i != p1.size(); i++)
{
if (*(ip1++) !=* (ip2++))
q++;
}
}
if (q == 0)
cout << "vectors are equal!" << endl;
else
cout << "vectors are not equal!" << endl;
return 0;
}