C++ 为什么当我的向量中的数字被复制到我的文件中时,它们没有反转?
程序运行得很好,向量的数字最终出现在我的文件中,但它们没有反转C++ 为什么当我的向量中的数字被复制到我的文件中时,它们没有反转?,c++,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]; v
#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();
}
#包括
#包括
#包括
使用名称空间std;
无效反转器(向量与虚拟磁盘、内部i、内部j)
{
如果(i>=j){
双温=vd[i];
vd[i]=vd[j];
vd[j]=温度;
i++;
j--;
}
}
int main(){
双n=0;
向量向量机;
while(cin>>n){
vd.推回(n);
}
反转器(vd,0,vd.size()-1);
ofs流(“reversedlist.txt”);
如果(!ofs){
不能
if (i >= j)
在reversevector
功能中
while (i < j)
while(i
否则,您可以有条件地交换第一个和最后一个数字,然后立即退出。行
if (i >= j)
在reversevector
功能中
while (i < j)
while(i
否则,您将有条件地交换第一个和最后一个数字,然后立即退出。您的reverseevector
函数最多交换两个元素。您必须交换两个以上的元素才能反转向量。由于if
中的测试条件无论如何都将为false,因此实际上它不会做任何事情。您的reversevector
函数最多交换两个元素。您必须交换两个以上的元素才能反转向量。由于if
中的测试条件无论如何都将为false,因此它实际上不会做任何事情。reverse vector中没有循环。它将运行一次,然后退出。您需要在数组上循环并重新执行e使其工作。反向向量中没有循环。它将运行一次,然后退出。您需要在数组上循环并替换以使其工作。您使用调用方法,例如:
reversevector( {1,2,3,4,5} , 0, 4 )
然后进入
if (0>=4) {
...
}
然后退出该方法-什么也不发生
当然,如果您调试了调用方法,您可以自己发现这个问题,比如:
reversevector( {1,2,3,4,5} , 0, 4 )
然后进入
if (0>=4) {
...
}
然后退出该方法-什么也不发生
当然,如果您调试了的话,您自己也可以发现这一点,只需考虑std::reverse\u copy(std::begin(vd)、std::end(vd)、std::ostream\u迭代器(ofs))“”,除此之外,还有“代码> STD::反转< /代码>,所以不需要做你自己的。有趣的单词选择。如果你的程序不做你想做的事,我几乎不认为“运行完美”。)只考虑<代码> STD::ReSysRead(STD::开始(VD),STD::结束(VD),STD::OrthuryType(OFS))。除此之外,还有<代码> STD::反转< /代码>,所以不需要做你自己的。有趣的单词选择。如果你的程序不做你想做的事,我几乎不认为“运行完美”。