我正在进行一项练习,需要将一个int值向量输入到第二个函数中进行重新排列,这样它们就会以相反的顺序排列(所以如果我在1,2,3,4中输入结果输出会是4,3,2,1)
// Workshop3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
int reverse(std::vector<int> a, std::vector<int> b)
{
int count = 0;
int end = a.size() - 1;
while (count < a.size())
{
b.push_back(a[end]);
count++;
end--;
}
return 1;
}
int main()
{
char blank;
//A simple int value for use in outputting the entire vector
int count = 0;
//Creates the initial vector
std::vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> rev;
std::cout << "Initial Vector \n";
//Outputs the vector onto the console
while (count < vec.size())
{
std::cout << vec[count] << " ";
count++;
}
std::cout << "\n";
std::cout << "Reversed";
std::cout << "\n";
reverse(vec, rev);
//Outputs the reversed vector
count = 0;
while (count < rev.size())
{
std::cout << rev[count] << " ";
count++;
}
std::cin >> blank;
return 0;
}
当向量传递给 reverse 函数时,信息在反转完成后不会返回到main函数。运行时, reverse 函数按预期工作,b向量按正确的顺序填充正确的值,但此信息不会传递回 rev 向量主要功能,正如我所料。
我很确定我刚才没有添加到实际执行此操作所需的代码中。任何人都可以解释我做错了什么。
如果需要进一步说明,请告诉我,我会尽可能详细说明。