我只是想知道是否在一个有元素的数组中,但是没有元素,例如:
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();
提前致谢。
答案 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)));