迭代器指向数组的空元素

时间:2018-02-22 12:42:27

标签: arrays c++11 iterator min

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

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 个答案:

答案 0 :(得分:0)

解决方案1 ​​

使用std :: numeric_limits :: max()

填充数组中的所有元素

解决方案2:

如果您不知道阵列的大小,请使用动态大小的容器=&gt;矢量:

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)));