c++ 错误:“[”标记前缺少模板参数[closed]

hjzp0vay  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(100)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
16小时前就关门了。
Improve this question
我在下面的代码中得到了一个“在'['标记之前缺少模板参数”的错误,并且我无法找到原因。任何帮助都是非常感谢的!

int indexOf(int a, int b){
    for(int i = 0;  i<N; i++){
        if(rank[a][i] == b){
            return i; 
        }
    }
    return 0; 
}

应在二维数组的子数组中查找元素的索引。
下面是整个函数:

#include <bits/stdc++.h>

using namespace std; 

int K, N; 

// a = subarray number, b = the number we want to find index of
int indexOf(int a, int b){
    for(int i = 0;  i<N; i++){
        if(rank[a][i] == b){
            return i; 
        }
    }
}

int main(){
    cin >>  K >> N; 
    int rank[K][N]; 
    for(int i = 0; i<K; i++){
        for(int j = 0; j<N; j++){
            cin >> rank[i][j]; 
        }
    }
int counter1, counter2, actualCounter; 
actualCounter =0; 
    for(int i = 0; i<N; i++){
        counter1 =0; 
        counter2 =0; 
        for(int j = 1; j<=N; j++){
            for(int k = 1; k<=N; k++){
                if(indexOf(i,j) > indexOf(i,k)){
                    counter1++; 
                } else if(indexOf(i,j) < indexOf(i,k)){
                    counter2++; 
                }
            }
        }
        if(counter1 == N || counter2 == N){
            actualCounter++; 
        }

    }
cout << actualCounter; 

}

示例输入

3 4
4 1 2 3
4 1 3 2
4 2 1 3

和肩部输出4。

qyswt5oh

qyswt5oh1#

除了使用rank作为第一个参数进行函数调用之外,如下声明您的函数将解决您的问题。

#include <iostream>

int N = 4;

int indexOf(int rank[][4], int a, int b){
    for(int i = 0;  i<N; i++){
        if(rank[a][i] == b){
            return i; 
        }
    }
    return -1;
}

int main() {
    int rank[6][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {0, 4, 7, 3}, {7, 6, 2, 3}, {5, 1, 2, 6}, {0, 1, 5, 4}};
    std::cout << indexOf(rank, 5, 4) << std::endl;
}

相关问题