C++ 我不知道如何在向量通过循环后将其传递回main #包括 #包括 使用名称空间std; 向量斐波那契(整数x,整数y,向量vi,整数n){ vi[0]=x; vi[1]=y; 对于(int i=2;i
对于直接的问题,您刚刚错过了将函数返回值赋回C++ 我不知道如何在向量通过循环后将其传递回main #包括 #包括 使用名称空间std; 向量斐波那契(整数x,整数y,向量vi,整数n){ vi[0]=x; vi[1]=y; 对于(int i=2;i,c++,C++,对于直接的问题,您刚刚错过了将函数返回值赋回vi #include <vector> #include <iostream> using namespace std; vector<int> fibonacci(int x, int y,vector<int> vi,int n){ vi[0]=x; vi[1]=y; for(int i=2;i<n;i++){ x=vi[i-2];
vi
#include <vector>
#include <iostream>
using namespace std;
vector<int> fibonacci(int x, int y,vector<int> vi,int n){
vi[0]=x;
vi[1]=y;
for(int i=2;i<n;i++){
x=vi[i-2];
y=vi[i-1];
vi[i]=x+y;
cout<<vi[i]<<" "<<endl;
}
return vi;
}
void printv(string label, vector<int> vi, int n){
cout<<label<<" "<<endl;
for (int j=0; j<n; j++)
cout<<vi[j]<<" "<<endl;
}
/*void reverseV(vector<int> vi,int n)
{
vector<int> rv= vi;
for (int i=rv.size()-1; i>=0; i--) {
cout << rv[i] << endl;
}*/
//}
int main()
{
int x;
int y;
vector<int> vi;
vector<int> rv;
int n=100;
string label;
cout<<"enter the max number of times you want it to add"<<endl;
cin>>n;
cout<<"enter the first two fibonacci numbers"<<endl;
cin>>x>>y;
fibonacci(x,y,vi,n);
printv("vector: ",vi,n);
printv("vector: ",rv,n);
//vi.swap(rv);
}
编辑:
不过,还有一些其他问题,比如您从未在向量上实际分配过空间,而是将值传递给函数并返回它。由于您似乎不想更改原来的值,所以只需使用本地向量
rv = fibonacci(x,y,vi,n);
向量斐波那契(int x,int y,int n){
向量vi(n);
您可以通过引用而不是通过值来传递向量。为此,请将函数的声明更改为
vector<int> fibonacci(int x, int y,int n){
vector<int> vi(n);
void fibonacci(intx,inty,vector&vi,intn){。。。
这样,您就可以在函数内部处理同一个vector对象,而不仅仅是它的副本。因此,您对vector所做的每一个更改在函数外部也是可见的。您甚至不应该传入一个vector,只需创建一个新的vector并返回:
void fibonacci(int x, int y,vector<int>& vi,int n){ ...
您的程序包含多个错误,例如:
已经知道包含元素的数量,如果传递向量,则无需指定大小std::vector
- 必须分配向量中的元素,不能像在javascript中那样只使用
分配给它们。要么先给向量指定一个大小,要么使用v[i]=x
添加元素push\u
- 显然,您不知道按值传递和按引用传递之间的区别
更容易和更好的是通过先读一本好书来学习C++。你可以找到一个列表。< /P>请修改你的代码格式^ ^ ^他说的。强调你的代码并点击按钮。欢迎到栈溢出。我想帮忙,你的问题是如此模糊,我真的不知道你在做什么。你能澄清吗?你的问题?+ 1,“通过实验学习C++是自杀的方法”。在开发了一些专门知识之后,它变得更有效。
std::vector<int> fibonacci(int x, int y, int n)
{
std::vector<int> vi(n);
vi[0] = x;
vi[1] = y;
//etc...
return vi;
}
vi = fibonacci(x,y,n);