-1

リストを読み取るメソッド(bool readList(vector a))を作成しました。このメソッドへの送信を引数としてメインにベクトルを作成したいと思います。例えば:

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

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 に答える
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 に答える