C++はvectorを返します/vectorをパラメータとして渡します

3261 ワード

C++では関数が2つ以上の結果を返したい場合が多く,配列(vector),クラスをコンテナとして返したり,グローバル変数の配列を宣言したりして,数値を配列に格納して解決する.
1つ目の方法は、vectorの参照を関数間で渡すために参照を使用することです.
これは例で、私が1つの数を入力すると仮定して、私の関数の機能はこの数の後ろの10の数のシーケンスを返すことです.
#include
#include
using namespace std;

/*
     ,              
        &       
*/ 
void getSequence(int num,vector<int>& sequence){
    for(int i=0;i<10;i++){
        sequence.push_back(i+num);
    }
}

int main(){
    int num=9;
    vector<int> sequence;
    //       ,     vector  
    getSequence(num,sequence);
    //   vector     ,        
    for(vector<int>::iterator it=sequence.begin();it!=sequence.end();it++){
        cout<

2つ目はvector変数を返すことです
呼び出された関数にvector変数を宣言し、関数が終了するとvector変数を返しますが、このようなパラメータ伝達方式はよく理解できません.vector変数が被変調関数で宣言されている以上、局所変数であるべきで、被変調関数の実行が完了するとこの部分の空間が破棄されるべきで、この変数はアクセスできません.もしかしてvectorはスタックスペースで開いたアドレスですか?そして戻ってくるのは実はスタック空間vectorを指すポインタですか?
vector<int> getSequence(int num){
    vector<int> sequence;
    for(int i=0;i<10;i++){
        sequence.push_back(i+num);
    }
    return sequence;
}

int main(){
    int num=9;
    vector<int> sequence;
    //       ,   num 
    sequence=getSequence(num);
    //   vector     ,        
    for(vector<int>::iterator it=sequence.begin();it!=sequence.end();it++){
        cout<