Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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++ 大小为10的向量的测试用例失败_C++_Sorting_C++11_Vector_Stdvector - Fatal编程技术网

C++ 大小为10的向量的测试用例失败

C++ 大小为10的向量的测试用例失败,c++,sorting,c++11,vector,stdvector,C++,Sorting,C++11,Vector,Stdvector,Ratiorg从CodeMaster那里得到了不同大小的雕像作为生日礼物,每个雕像都有一个非负整数大小。因为他喜欢把东西做得完美,所以他想把它们从最小的到最大的排列,这样每尊雕像都会比前一尊雕像大1倍。他可能需要一些额外的雕像才能做到这一点。帮助他计算出所需的额外雕像的最小数量 范例 对于status=[6,2,3,8],输出应该是 makeArrayConsecutive2(雕像)=3 这是一个来自代码战的问题。 下面是我写的代码 #include <iostream> #incl

Ratiorg从CodeMaster那里得到了不同大小的雕像作为生日礼物,每个雕像都有一个非负整数大小。因为他喜欢把东西做得完美,所以他想把它们从最小的到最大的排列,这样每尊雕像都会比前一尊雕像大1倍。他可能需要一些额外的雕像才能做到这一点。帮助他计算出所需的额外雕像的最小数量

范例

对于status=[6,2,3,8],输出应该是 makeArrayConsecutive2(雕像)=3

这是一个来自代码战的问题。 下面是我写的代码

#include <iostream>
#include <vector>
#include<algorithm>

using std::vector;

int makeArrayConsecutive2(std::vector <int> statues) {

    vector<int>::size_type size = statues.size();
    sort( statues.begin(), statues.end() );
    int counter = 0;
    for( int i = 0; i<size; i++ )
    {
        int dif =  statues[i+1] - statues[i] - 1; 
        if( dif >= 1 ) {counter+=dif;}
    }
    return counter;
}
int main()
{
  vector<int> c = {1,2,3,4,5,6,7,8,9,10};

  std :: cout<<"You need "<<makeArrayConsecutive2(c)<<" statues"<<std::endl;

  return 0;
}
#包括
#包括
#包括
使用std::vector;
int makeArrayConsecutive2(标准::向量状态){
vector::size_type size=status.size();
排序(status.begin()、status.end());
int计数器=0;
对于(inti=0;i=1){counter+=dif;}
}
返回计数器;
}
int main()
{
向量c={1,2,3,4,5,6,7,8,9,10};

std::cout关于
周期
状态[i+1]的最后一次迭代
将超出范围,导致未定义的行为。您需要在
for
循环之前添加检查,确保
状态
不为空,然后迭代直到
大小-1

…您如何混淆维度和值?是否尝试过调试它?(提示:定义
\u GLIBCXX\u DEBUG
,当您在大多数情况下误用STL组件时,程序将向您发出警告。)太好了,您不必
使用命名空间std
。非常感谢