-1

我创建了一个读取列表的方法( bool readList(vector a) )。我想在 main 上创建一个向量作为参数发送到此方法。例如:

bool readList(vector<int> a){
   //Fill...
}
void main(){
   vector<int> my_vector;
   readList(my_vector);
   //work with my vector
}

我应该使用指针正确吗?但是怎么做?我已经尝试了几种可能性,但都没有奏效。

4

4 回答 4

2

现在,您正在a按值传递(制作副本),对其进行修改,然后丢弃结果。您应该通过a引用传递:

// a passed by reference
bool readList(vector<int>& a){ 
   //Fill...
}
void main(){
   vector<int> my_vector;
   readList(my_vector); // inside readList a will now refer to my_vector
   //work with my vector
}

此外,您应该将签名更改main为 return int

于 2013-01-11T12:23:49.073 回答
0

您需要使用参考

bool readList(vector<int>& a)

这意味着为了a传播到它的源所做的任何更改,my_vector.

于 2013-01-11T12:23:23.247 回答
0

在这种情况下,您希望通过引用传递。为此,请将您的方法定义更改为:

bool readList(vector<int>& a){
   //Fill...
}
于 2013-01-11T12:23:27.447 回答
0

像 STL 算法一样,您可以更改readList为采用如下输出迭代器:

#include <iterator>
#include <vector>

template<class OutputIterator>    
OutputIterator readList(OutputIterator result) {
    // For example: Adds 0, 1, 2, 3, 4
    for (int i = 0; i < 5; i++)
        *result++ = i;
    return result;
}

int main() {
    std::vector<int> my_vector;
    readList(std::back_inserter(my_vector));
    return 0;
}
于 2013-01-11T13:03:43.647 回答