Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 并行工作但未达到预期效果_C++_Arrays - Fatal编程技术网

C++ 并行工作但未达到预期效果

C++ 并行工作但未达到预期效果,c++,arrays,C++,Arrays,。 . . . .. . . . .. . . . . . . . .. . . .问题: 当您进行投票时(),您可以使用countryInd索引将分数输入到voteTotal: voteTotal[countryInd[i]] = voteTotal[countryInd[i]] + score; // in voting() 因此,您希望国家名称的顺序及其相关分数id都使用countryInd[]中定义的访问顺序 // score of countries.at(countryInd[i

。 . . . .. . . . .. . . . . . . . .. . .
.

问题:

当您进行投票时(),您可以使用
countryInd
索引将分数输入到
voteTotal

voteTotal[countryInd[i]] = voteTotal[countryInd[i]] + score;  // in voting()
因此,您希望国家名称的顺序及其相关分数id都使用
countryInd[]
中定义的访问顺序

// score of countries.at(countryInd[i]) corresponds to valueTotal[countryInd[i]]
当您使用
BubbleSort()
时,您可以交换
countryInd[]
voteTotal[]
中的元素。这就是问题的原因,因为国家名称的正确访问顺序仍然是countryInd[i],但现在分数是i:

//score of countries.at(countryInd[i]) corresponds now to valueTotal[i]
您已经知道这一点,因为这正是您在
printRankedTable()中使用的逻辑

不幸的是,当您进行第二次投票时,您再次假设两个表使用在
countryInd[]
中定义的相同访问序列,这是一个不再有效的假设。你最终会把一个国家的投票数加到另一个国家的投票总数中

解决方案

将if子句中的
BubbleSort()
更改如下:

if (arr[countryInd[i]] < arr[countryInd[i + 1]]) // indirect access through countryInd
        {
            //tmp = arr[i];           delete => no longuer needed
            //arr[i] = arr[i + 1];    delete => no longuer needed
            //arr[i + 1] = tmp;       delete => no longuer needed
            tmpC = countryInd[i];
            countryInd[i] = countryInd[i + 1];
            countryInd[i + 1] = tmpC;
            swapped = true;
        }

寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。
这不是冒泡式的问题。看起来,冒泡排序函数在将单个项目冒泡到顶部时立即返回。尽管如此,它仍然有效。我对排序功能很满意。我的主要问题是voteTotal函数true:排序函数排序很好。不幸的是,通过对分数和访问国家的顺序进行排序,您造成了不匹配。
 cout << countries.at(countryInd[i]) << "\t" << voteTotal[countryInd[i]] << endl;  // only indirect access via countryInd