【发布时间】:2020-09-26 13:23:31
【问题描述】:
每当我通过指针算法迭代 C++ 数组时(即不使用 Java 风格的索引递增),我首先获取数组中最后一个元素的地址,然后只要当前地址不是最后地址:
#include <iostream>
using namespace std;
int main()
{
int values[] = { 1, 2, 3, 4, 5 };
int* lastAddress = values + size(values);
for (int *p=values; p != lastAddress; p++) {
cout << "val: " << *p << endl;
}
}
这是做这种事情的普遍接受的方式吗?
【问题讨论】:
-
不,“普遍接受”的方式是使用 C++11 的范围迭代,为您完成所有这些工作。这是处理数组的传统方式。 C++11 已经有将近十年的历史了,它提供了更方便的方式来处理许多此类性质的事情。
-
for (auto p = begin(values); p != end(values); ++p) ,for循环也可以这样替换。
-
伙计们,不要在 cmets 中回答。谢谢。
-
@TMOTTM
std::begin/std::end不返回指针。他们返回迭代器。