【发布时间】:2021-12-18 19:14:24
【问题描述】:
这里是编码新手,我在 HackerRank 上有一个问题。它告诉我创建一个函数来比较 2 个数组的元素并在一个数组中返回 2 个值。但是我得到“没有可行的转换”错误。当我将“分数”的类型更改为向量时,出现编译器错误,提示“分段错误”。我想知道这是什么,为什么会发生,以及在哪里可以找到更多相关信息。
vector<int> compareTriplets(vector<int> a, vector<int> b) {
int sA = 0, sB = 0;
vector<int> scores;
for(int i = 0; i <3; i++){
if (a[i] > b[i]){
sA++;
}else{
sB++;
}
}
scores[0] = sA;
scores[1] = sB;
return scores;}
【问题讨论】:
-
vector<int> scores;创建一个 empty 向量,没有任何元素。向量中的任何索引都将超出范围。 -
另外,数组和向量是不同的,不能相互转换。
-
最后,所谓的“竞赛”或“在线评委”网站不是任何类型的教学或学习资源。事实上,试图这样使用它们实际上可能是有害的。不要使用此类网站,而是获取some good books 并上课。