C++ primer-练习3.34~3.36

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值