Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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+上的递归+; 嘿,伙计们,我正在试着把这个JavaScript代码变成C++。我正在做快速排序,除了最后一步,一切都是直截了当的 function quickSort(arr) { //base case if the arr is 1 or 0 then return the array if(arr.length === 1 || arr.length === 0) { return arr; } var pivotIndex = Math.floor(arr.length/2); var pivotValue = arr[pivotIndex]; var before = []; var after = []; for(var counter = 0; counter < arr.length; counter++) { if(counter === pivotIndex) continue; if(pivotValue <= arr[counter]) { before.push(arr[counter]) } else { after.push(arr[counter]) } } //this step I am having trouble rewriting in c++ return quickSort(after).concat(pivotValue).concat(quickSort(before)); } 函数快速排序(arr) { //基本情况如果arr为1或0,则返回数组 如果(arr.length==1 | | arr.length==0) { 返回arr; } var pivotIndex=数学楼层(arr.length/2); var pivotValue=arr[pivotIndex]; 前风险值=[]; var后=[]; 用于(变量计数器=0;计数器,但是,这意味着它不返回任何内容。因此,当您试图返回插入< /C> >的结果时,会得到无效使用空表达式的错误。此外,在C++中,代码> vector。插入< /COD>修改< 向量< /代码>。_Javascript_C++_Recursion_Vector - Fatal编程技术网

返回向量c+上的递归+; 嘿,伙计们,我正在试着把这个JavaScript代码变成C++。我正在做快速排序,除了最后一步,一切都是直截了当的 function quickSort(arr) { //base case if the arr is 1 or 0 then return the array if(arr.length === 1 || arr.length === 0) { return arr; } var pivotIndex = Math.floor(arr.length/2); var pivotValue = arr[pivotIndex]; var before = []; var after = []; for(var counter = 0; counter < arr.length; counter++) { if(counter === pivotIndex) continue; if(pivotValue <= arr[counter]) { before.push(arr[counter]) } else { after.push(arr[counter]) } } //this step I am having trouble rewriting in c++ return quickSort(after).concat(pivotValue).concat(quickSort(before)); } 函数快速排序(arr) { //基本情况如果arr为1或0,则返回数组 如果(arr.length==1 | | arr.length==0) { 返回arr; } var pivotIndex=数学楼层(arr.length/2); var pivotValue=arr[pivotIndex]; 前风险值=[]; var后=[]; 用于(变量计数器=0;计数器,但是,这意味着它不返回任何内容。因此,当您试图返回插入< /C> >的结果时,会得到无效使用空表达式的错误。此外,在C++中,代码> vector。插入< /COD>修改< 向量< /代码>。

返回向量c+上的递归+; 嘿,伙计们,我正在试着把这个JavaScript代码变成C++。我正在做快速排序,除了最后一步,一切都是直截了当的 function quickSort(arr) { //base case if the arr is 1 or 0 then return the array if(arr.length === 1 || arr.length === 0) { return arr; } var pivotIndex = Math.floor(arr.length/2); var pivotValue = arr[pivotIndex]; var before = []; var after = []; for(var counter = 0; counter < arr.length; counter++) { if(counter === pivotIndex) continue; if(pivotValue <= arr[counter]) { before.push(arr[counter]) } else { after.push(arr[counter]) } } //this step I am having trouble rewriting in c++ return quickSort(after).concat(pivotValue).concat(quickSort(before)); } 函数快速排序(arr) { //基本情况如果arr为1或0,则返回数组 如果(arr.length==1 | | arr.length==0) { 返回arr; } var pivotIndex=数学楼层(arr.length/2); var pivotValue=arr[pivotIndex]; 前风险值=[]; var后=[]; 用于(变量计数器=0;计数器,但是,这意味着它不返回任何内容。因此,当您试图返回插入< /C> >的结果时,会得到无效使用空表达式的错误。此外,在C++中,代码> vector。插入< /COD>修改< 向量< /代码>。,javascript,c++,recursion,vector,Javascript,C++,Recursion,Vector,是这样,你意识到你的核心问题是“如何连接两个向量”s”,然后你找到了一个。现在你的问题是为什么你会得到“一个关于无效使用void表达式的错误”。(这是我的答案至少支持的假设。) 这是因为您可能试图执行以下操作: return quickSort(after).insert( /* stuff */ ); 这是错误的。在JavaScript中,array.concat返回连接的数组。它的返回类型实际上是array,这样做返回arr.concat(arr2)返回一个数组,因为arr.concat将

是这样,你意识到你的核心问题是“如何连接两个
向量”
s”,然后你找到了一个。现在你的问题是为什么你会得到“一个关于无效使用void表达式的错误”。(这是我的答案至少支持的假设。)

这是因为您可能试图执行以下操作:

return quickSort(after).insert( /* stuff */ );
这是错误的。在JavaScript中,
array.concat
返回连接的数组。它的返回类型实际上是
array
,这样做
返回arr.concat(arr2)
返回一个
数组
,因为
arr.concat
将返回一个
数组
。此外,在JavaScript中,
Array.concat
不会修改调用它的数组,而是返回一个新数组

< C++ >,但是,这意味着它不返回任何内容。因此,当您试图返回<代码>插入< /C> >的结果时,会得到无效使用空表达式的错误。此外,在C++中,<>代码> vector。插入< /COD>修改< <代码>向量< /代码>。 那么在这种情况下如何使用insert呢

vector<int> quickSort(vector<int> arr)
{
    // ...

    // Sort `before` and `after`
    before = quickSort(before);
    after = quickSort(after);

    // Modify `after` and return it.
    after.push_back(pivotValue);
    after.insert(after.end(), before.begin(), before.end());
    return after;
}
矢量快速排序(矢量arr)
{
// ...
//将“before”和“after”排序`
before=快速排序(before);
after=快速排序(after);
//修改'after'并返回它。
之后。向后推_(数据透视值);
after.insert(在.end()之后、在.begin()之前、在.end()之前);
返回后;
}

<强>注释:<强>我的代码不是最优的,C++中重写JS的想法也很奇怪。我的答案是简单地勾勒出问题中提出的问题,<强>不要给出快速排序< <强> > /p> < p>的C++实现,以使用两个向量,可以使用STD::合并。


例如:代码:> St:::V1..EngEnter(,V2.EngEnter),v2..Enter(),STD::Buff-IdxPoter(DST);/P>使用不止一行。LOL当然是很棒的,我理解,但是我的C++有点生锈,所以一个例子是NeCeCeNeNATEDATABASE <代码> V<代码>和<代码> V2<代码>:<代码> v.插入(v.Enter),v2..No.(),v2..()。将分区放在适当的位置以避免额外的分配(因此使用范围而不是容器)会更有效。而且除非是为了练习,我们有
std::sort
vector<int> quickSort(vector<int> arr)
{
    // ...

    // Sort `before` and `after`
    before = quickSort(before);
    after = quickSort(after);

    // Modify `after` and return it.
    after.push_back(pivotValue);
    after.insert(after.end(), before.begin(), before.end());
    return after;
}