min_element()
应该返回一个指向数组或向量中最小元素的指针,但在这里它返回具有最小值的元素位置。为什么会这样? 对不起,这个愚蠢的问题我是初学者。
int n; cin>>n;
vector<int> arr(n);
for(int i=0;i<n;i++)
cin>>arr[i];
int minElementIndex = min_element(arr.begin(),arr.end()) - arr.begin();
cout<<minElementIndex;
min_element
返回指向元素的迭代器(不一定是指针(。它在这里也是如此。
但是,您没有打印min_element
调用的返回值。您首先从中减去迭代器到arr
的开头(- arr.begin()
(。
减去容器的(随机访问(迭代器(或指向同一数组的指针(会得到一个整数,其值等于迭代器或指针之间的距离。因此,如果将迭代器减去开头,则会得到整数形式的元素索引。
您在调用min_element
时正在从另一个指针中减去指针。请尝试以下方法:
int index;
int n; cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++)
cin >> arr[i];
int minElementValue = *std::min_element(arr.begin(), arr.end());
for (int i = 0; i < n; i++) {
if (arr[i] == minElementValue) {
index = i;
}
}
cout << minElementValue << ":" ;
cout << " " << index;