2013-10-14 48 views
1

我是新來C++ std :: set用戶。如何通過調用函數(通過引用調用)來更改std :: set元素?在c + +

這裏是一個問題:我在main函數中初始化一個集合,並且我想通過調用某個函數來插入一個 元素。但它似乎並不奏效。

這是關於通過引用或其他的調用?謝謝!

#include <iostream> 
#include <set> 
using namespace std; 
void f(set<int> myset){ 
    set<int>::iterator it; 
    // insert element 
     for(int i=1;i<11;i++){ 
    myset.insert(i*10); 
    }  
} 
int main() 
{ 
    set<int> myset; 
    set<int>::iterator it; 
    f(myset); 
    //output element 
    for(it=myset.begin();it!=myset.end();it++){ 
     cout<<*it<<" ";  
    } 
    return 0; 
} 

回答

3

你是對的,你需要按引用傳遞,否則你會被修改該組的本地副本:

void f(set<int>& myset) 
{ //   ^
    for(int i = 1; i < 11; i++) 
    myset.insert(i*10); 
} 
+1

到OP:作爲一個經驗法則,當你想叫函數來修改調用函數的某些值,您需要傳遞一個引用(或一個指針)。按價值傳遞意味着「複製」 –