指向数组空元素的迭代器

Iterator pointing to empty element of array

我只是想知道是否在一个有元素但元素不全的数组中,例如:

std::array<int, 5> foo;
foo[0] = 4;
foo[1] = 2;
foo[2] = 3;

foo.end() 仍会指向最后一个元素 + 1 还是会指向 foo[3] 处的值?

我的上下文是我试图找到一个数组的最小值位置,该数组有时只分配了所有元素。一些示例代码如下:

int min_loc = std::min_element(foo.begin(), foo.end()) - foo.begin();

这会提取 min_loc = 1 吗?或者它会在数组中的未定义元素处找到 0 并将它们指定为最小位置吗?

如果是这样,我是否应该将上面的行定义为:

int min_loc = std::min_element(foo.begin(), foo.end() - 2) - foo.begin();

提前致谢。

解决方案 1

用std::numeric_limits::max()

填充数组中的所有元素

方案二:

如果您不知道数组的大小,请使用动态大小的容器 => 向量:

std::vector<int> foo;
foo.push_back(4);
foo.push_back(2);
foo.push_back(3);

int min_loc = std::distance(std::begin(v), std::min_element(std::begin(v), std::end(v)));