当它们复制到我的文件中时,为什么这不会反转向量中的数字?

时间:2012-11-26 04:25:48

标签: c++

程序运行完美,我的矢量数量最终在我的文件中,但它们没有反转。

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

void reversevector(vector<double> &vd, int i, int j)
{
    if(i>=j) {
        double temp = vd[i];
        vd[i]=vd[j];
        vd[j]=temp;
        i++;
        j--;
    }
}
int main() {
    double n = 0;
    vector<double> vd;
    while (cin>>n) {
        vd.push_back(n);
    }

    reversevector(vd,0,vd.size()-1);

    ofstream ofs("reversedlist.txt");

    if(!ofs) {
        cout<<"error";
        exit(1);
    }

    for(int i=0; i<vd.size(); i++){
        ofs<<vd[i];
    }

    ofs.close();
}

例如:如果我将12345放入向量中,它应该将54321打印到我的文件中。当我打开我的文件时,它仍然包含12345。

4 个答案:

答案 0 :(得分:6)

该行

if (i >= j)
reversevector函数中的

应为

while (i < j)

否则,您有条件地交换第一个和最后一个号码,然后立即退出。

答案 1 :(得分:3)

你打电话给你的方法,比如说:

reversevector( {1,2,3,4,5} , 0, 4 )

然后进入

if (0>=4) {
  ...
 }

然后退出方法 - 没有任何反应。

当然,如果您已经调试,您可以自己发现

答案 2 :(得分:2)

反向向量中没有循环。它将运行一次然后退出。你需要遍历数组并替换它才能工作。

答案 3 :(得分:1)

您的reversevector函数最多交换两个元素。您必须交换两个以上的元素来反转向量。由于if中的测试条件无论如何都是假的,它实际上根本不会做任何事情。