簡體   English   中英

C ++指針向量

[英]C++ pointers vector

我創建了一個讀取列表的方法(bool readList(vector a))。 我想在主要創建一個向量作為參數發送到此方法。 例如:

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

我應該使用指針正確嗎? 但是如何? 我已經嘗試了幾種可能性,但沒有一種起作用。

現在你傳遞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

您需要使用參考

bool readList(vector<int>& a)

這意味着,任何改變做出a傳播到它的源代碼, my_vector

在這種情況下,您想通過引用傳遞 為此,將您的方法定義更改為:

bool readList(vector<int>& a){
   //Fill...
}

就像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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM