Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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++ 无法确定旋转矢量时输出错误的原因_C++_Algorithm - Fatal编程技术网

C++ 无法确定旋转矢量时输出错误的原因

C++ 无法确定旋转矢量时输出错误的原因,c++,algorithm,C++,Algorithm,我已经编写了以下代码- #include <cassert> #include <vector> #include <string> #include <sstream> #include <algorithm> using namespace std; vector<int> v; int main() { int n, d, i = 0; cin >> n >> d;

我已经编写了以下代码-

#include <cassert>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>

using namespace std;

vector<int> v;

int main()
{
    int n, d, i = 0;
    cin >> n >> d;
    assert(n >= 1 && n <= 100000 && d >= 1 && d <= n);
    int temp = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> temp;
        v.push_back(temp);
    }
    reverse(v.begin(), v.begin() + d - 1);
    reverse(v.begin() + d, v.end());
    reverse(v.begin(), v.end());
    for (i = 0; i < n; i++)
        cout << v[i] << " ";
    return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
向量v;
int main()
{
int n,d,i=0;
cin>>n>>d;
断言(n>=1&&n=1&&d>temp;
v、 推回(温度);
}
反向(v.begin(),v.begin()+d-1);
反向(v.开始()+d,v.结束());
反向(v.begin(),v.end());
对于(i=0;icout对于该输入,程序的输出是正确的。错误的是您的期望

需要认识到的是,标准算法不会取消对指定的结束迭代器的引用。因此
reverse(v.begin(),v.begin()+3)
将反转
v
的前三个元素(即
v[0]
v[2]
),而不是前四个元素

因此,第一个
reverse()
反转前三个元素,生成顺序
3 2 1 4 5


为了得到您期望的结果,它将颠倒前四个步骤。

您尝试过使用调试器吗?@AlgirdasPreidžius-不幸的是,这是一个新系统,我没有安装调试工具。另外,它是Linux:(那么?从Linux发行版的包管理器安装一个应该不到5分钟。(你甚至可能已经安装了的基本命令行版本,即使在没有图形前端的情况下使用它也需要一些学习。)非常感谢Peter。请你解释一下这句话好吗?“需要意识到的是,标准算法不会取消对指定端迭代器的引用。”这意味着永远不会访问与结束迭代器对应的值。