C++ placeNumbers应该返回数字的顺序,以便满足布尔值向量中编码的条件

C++ placeNumbers应该返回数字的顺序,以便满足布尔值向量中编码的条件,c++,C++,placeNumbers是一个函数,它应该取n个整数的向量和n个整数的向量−1布尔值作为输入并返回n个整数的向量。placeNumbers应该返回数字的顺序,以便满足布尔值向量中编码的条件。如果 左边的数字小于右边的数字,否则为假。可以假设向量将按升序排列 我在末尾遇到了一个错误,其中tempNumbers[I+1]=更小的.pop();其中表示“不能将类型为“void”的值分配给类型为“int”的实体” 我不知道如何修复这个错误,我也不确定我的代码是否能按照家庭作业的要求正确工作。这是我第一次

placeNumbers是一个函数,它应该取n个整数的向量和n个整数的向量−1布尔值作为输入并返回n个整数的向量。placeNumbers应该返回数字的顺序,以便满足布尔值向量中编码的条件。如果 左边的数字小于右边的数字,否则为假。可以假设向量将按升序排列

我在末尾遇到了一个错误,其中tempNumbers[I+1]=更小的.pop();其中表示“不能将类型为“void”的值分配给类型为“int”的实体”

我不知道如何修复这个错误,我也不确定我的代码是否能按照家庭作业的要求正确工作。这是我第一次使用C++,所以如果我做了愚蠢的事情,请不要对我大喊大叫:(< / P>)
#包括
#包括
#包括
#包括
#包括“CSCE310ASSGNT02PRT01.h”
#包括
使用名称空间std;
矢量位置号(矢量号、矢量符号){
向量数;
向量分类数;
std::sort(numbers.begin()、numbers.end()、sortedNumber);
int nbigger=累加(signs.begin(),signs.end(),0);
int startIndex=sizeof(数字)-(nbigger+1);
std::更小;
对于(int i=0;ipop()
不返回值,它只是删除堆栈顶部并返回
void
。您需要调用
top()
获取值,然后
pop()
删除它。您可以阅读
top()
的文档 以及
pop()的文档

#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;
}