程序运行完美,我的矢量数量最终在我的文件中,但它们没有反转。
#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。
答案 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
中的测试条件无论如何都是假的,它实际上根本不会做任何事情。