3.34假定p1和p2指向同一个数组中的元素,则下面程序的功能是什么?什么情况下该程序是非法的?
p1 += p2 - p1;
功能:把p2的值赋给p1,等价于p1 = (p2 - p1) + p1即 p1 = p2;
在p1和p2不指向同一个数组中元素的时候,程序非法。
3.35 编写一段程序,利用指针将数组元素置为0。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
const size_t sz = 10;
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int *b = arr;
int *e = arr + sz;
while (b != e)
{
*b = 0;
++b;
}
return 0;
}
3.36 编写一段程序,比较两个数组是否相等。在编写一个程序,比较两个vector对象是否相等。
#include <iostream>
#include <string>
using namespace std;
int main(){
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int b[] = { 2, 3, 4, 5, 6, 7, 7, 8, 9, 0 };
size_t counta = sizeof(a) / sizeof(*a), countb = sizeof(b) / sizeof(*b);
if (counta != countb)
{
cout << "array :length false";
return 0;
}
for (size_t i = 0; i != counta; ++i)
{
if (*(a + i) != *(b + i))
{
cout << "array :size false";
return 0;
}
}
cout << "array :true";
return 0;
}
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
vector<int> v1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
vector<int> v2 = { 1, 2, 3, 4, 5, 7 };
auto v1Beg = v1.begin(), v2Beg = v2.begin();
if (v1.size() != v2.size())
{
cout << "vector: length false";
return 0;
}
for (auto i : v1)
{
if (*(v1Beg + i) != *(v2Beg + i))
{
cout << "vector: size false";
return 0;
}
}
cout << "vector: true";
return 0;
}
本文介绍了通过指针操作实现数组元素清零的方法,并提供了比较两个数组及vector对象是否相等的程序示例。
255

被折叠的 条评论
为什么被折叠?



