min()函数的副作用

Side effect of min() function

本文关键字:副作用 函数 min      更新时间:2023-10-16

我不明白为什么[i]的值无意中修改?评论标记的行应仅修改数组p的值,而不是a的值。我注意到数组值正在修改为副作用。我不知道为什么。

#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
    unsigned int N, Q, K;
    unsigned int a[N], p[N][N];
    unordered_map<unsigned int, unsigned int> counts_vector;
    cin >> N;
    for (unsigned int i = 0; i < N; i++) {
        cin >> a[i];
        p[i][i] = a[i];
        for (unsigned int j = 0; j < i; j++) {
            p[j][i] = min(p[j][i - 1], a[i]); // why is the value of a[i] getting modified?
        }
    }
    for (unsigned int k = 0; k < N; k++) {
        cout << "a: "<<a[k]<< endl;
    }
}

您不应该在n给出值之前声明 unsigned int a[N], p[N][N];

更改

unsigned int N, Q, K;
unsigned int a[N], p[N][N];
unordered_map<unsigned int, unsigned int> counts_vector;
cin >> N;

to

unsigned int N, Q, K;
cin >> N;
unsigned int a[N], p[N][N];
unordered_map<unsigned int, unsigned int> counts_vector;