练习3.34
int main() {
int ia[] = { 1,2,3,4,5 };
int* p1 = &ia[0];
int* p2 = &ia[2];
cout << *p1 << endl; //1
cout << *p2 << endl; //3
p1 += p2 - p1; //实质等价于 p1=p1+(p2-p1),让p1指向p2所指的对象
cout << *p1 << endl; //3
cout << *p2 << endl; //3
}
练习3.35
int main() {
int ia[] = { 1,2,3,4,5 };
int* pbeg =ia, * pend = end(ia);
while (pbeg != pend)
{
*pbeg = 0;
cout << *pbeg << " ";
++pbeg;
}
}
练习3.36
int main()
{
int ia[] = { 1,2,3,4,5 };
int ib[] = { 1,2,5,4,5,6,7 };
if (ia == ib)
{
cout << "相等" << endl;
}
else
cout << "不相等" << endl;
}
int main()
{
int ia[] = { 1,2,3,4,5 };
int ib[] = { 1,2,5,4,4 };
int* ba =ia, * ea = end(ia);
int* bb = ib, * eb = end(ib);
//比较ia数组和ib数组是否相等
while (*ba == *bb && ba != ea && bb != eb) //验证元素是否相同,如果全部检查完则结束循环
{
++ ba;
++ bb;
}
//此时有2种情况
//ba和bb不相等,第一个循环条件不满足,中途退出循环,此时*ba!=*bb
//ba和bb前面都相等,ba和bb都到了最后一个元素也相等,++后得到尾元素的后一个位置,第二个和第三个循环条件不满足,退出循环
//ba和bb前面都相等,ba到了最后一个元素,而bb没到,第二个循环条件不满足,此时*ba!=*bb
if (*ba == *bb)
{
cout << "相等" << endl;
}
else {
cout << "不相等" << endl;
}
}
int main()
{
vector<int> ia = { 1,2,3,4,5 };
vector<int> ib = { 1,2,5,4,4 };
if (ia == ib)
{
cout << "相等" << endl;
}
else
cout << "不相等" << endl;
}