每当我使用指针算术方式(而不是像Java一样通过增加索引)迭代C++数组时,我首先获取数组中最后一个元素的地址,然后只要当前地址不是最后一个地址,就进行迭代。
#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;
}
}
这是一般接受的做法吗?
std::begin
/std::end
不返回指针,它们返回迭代器。 - Jesper Juhl<
而不是!=
没有任何优势,但会有一些额外的失败情况。因此,我的建议是相反的。另请参阅https://dev59.com/Umw15IYBdhLWcg3wWqV0#6673775 - Jesper Juhl