【发布时间】:2020-12-23 14:38:38
【问题描述】:
有没有办法达到和这个一样的效果,
std::list<int> l(10);
std::iota(l.begin(), l.end(), -4);
有一个普通的int a[]?
或者,以下是唯一的解决方法:
for (iterator itr = begin; itr != end; ++itr)
/* ... visit *itr here ... */
【问题讨论】:
-
只是
std::iota( std::begin(a), std::end(a), -4 )。我的意思是,如果后者是“唯一的解决方法”,那么首先如何让这些迭代器与for循环? -
那是 O(1) 吗?对吗?
-
为什么不呢?指向普通数组的迭代器只是指针。这似乎是 Cannot use .begin() or .end() on an array 的欺骗
-
?什么意思?
-
该数组的
std::begin和std::end等效于&a[0]和&a[number_of_elements](您可以永远使用它们)。迭代器的接口与指针的接口外观相同并非巧合。