[英]placeNumbers should return an ordering of the numbers such that the conditions encoded in the vector of Boolean values are met
placeNumbers是一个函数,应将n个整数的向量和n-1个布尔值的向量作为输入,并返回n个整数的向量。 placeNumbers应该返回数字的顺序,以便满足布尔值向量中编码的条件。 如果布尔向量的左边的数字小于右边的数字,则布尔向量中的值将为true,否则为false。 可以假设向量将按升序排列。
我在最后的tempNumbers [i + 1] = small.pop();时遇到错误。 它说“不能将类型为“ void”的值分配给类型为“ int”的实体”
我不知道如何解决此错误,而且我不确定我的代码是否可以根据家庭作业正常工作。 这是我使用C ++的第一门课程,所以如果我做一些愚蠢的事情,请不要对我大喊大叫:(
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include "csce310assgnmnt02prt01.h"
#include <numeric>
using namespace std;
vector<int> placeNumbers(vector<int> numbers, vector<bool> signs){
vector<int> tempNumbers;
vector <int> sortedNumbers;
std::sort(numbers.begin(), numbers.end(), sortedNumbers);
int nbigger = accumulate(signs.begin(), signs.end(), 0);
int startIndex = sizeof(numbers) - (nbigger + 1);
std::stack<int>smaller;
for (int i = 0; i < startIndex; i++){
smaller.push(sortedNumbers[i]);
}
std::queue<int>bigger;
for (int i = startIndex + 1; i <sizeof(sortedNumbers); i++){
bigger.push(sortedNumbers[i]);
}
for (int i = 0; i < sizeof(signs); i++){
if (signs[i] == 0){
tempNumbers[i + 1] = smaller.pop();
}
if (signs[i] == 1){
tempNumbers[i + 1] = bigger.pop();
}
numbers = tempNumbers;
}
return numbers;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.