gpt4 book ai didi

c++ - placeNumbers 应返回数字的顺序,以满足 bool 值 vector 中编码的条件

转载 作者:行者123 更新时间:2023-11-30 03:56:01 26 4
gpt4 key购买 nike

placeNumbers 是一个函数,它应该将一个包含 n 个整数的 vector 和一个包含 n−1 个 bool 值的 vector 作为输入并返回一个包含 n 个整数的 vector 。 placeNumbers 应返回数字的排序,以满足 bool 值 vector 中编码的条件。 bool vector 中的值将为真,如果左边的数字小于右边的数字,否则为假。可以假定 vector 将按升序排列。

我在 tempNumbers[i + 1] = smaller.pop(); 的最后得到了一个错误;它说“不能将类型为“void”的值分配给类型为“int”的实体”

我不知道如何修复这个错误,我不确定我的代码是否能正确地满足作业的要求。这是我使用 C++ 的第一门类(class),所以如果我做了一些愚蠢的事情,请不要对我大喊大叫:(

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

最佳答案

pop() 不返回值,它只是移除栈顶并返回 void。您需要调用 top() 来获取值,然后调用 pop() 来删除它。 Here你可以阅读 top() 的文档 和 here pop()

文档

关于c++ - placeNumbers 应返回数字的顺序,以满足 bool 值 vector 中编码的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com