在c ++中使用std向量的问题

时间:2016-01-22 17:11:35

标签: c++ c++11 vector

我的代码有问题,我可以填写表格但是当我显示它时,它会显示0给我,这是我的代码

#include<iostream>
#include<vector>

using namespace std;
int n;
void lire_tab(vector<int> A);
void tri_tab(vector<int> A);
void aff_tab(vector<int> A);

int main()
{        
    cout<<"donnez la taille du tableau: ";
    cin>>n;
    vector<int> A(n);
    lire_tab(A);
    aff_tab (A);
    tri_tab (A);
    aff_tab (A);

    return 0;
}

void lire_tab(vector<int> A)
{
    for(int i=0;i<n;i++)
    {
        cout<<"A["<<i<<"]= ";
        cin>>A[i];
    }
    cout<<"________________________"<<endl;
}

void tri_tab(vector<int> A)
{
    int temp;
    temp=0;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++){
            if(A[i]<A[j])
            {
                temp   = A[i];
                A[i]   = A[j];
                A[j] = temp;
            }
        }        
    }
}

你能帮助我吗,我真的迷失了,我真的没弄明白为什么打印0

2 个答案:

答案 0 :(得分:2)

您的函数正在使用传值,因此,在函数中可以看到副本。

请阅读passing by reference

void lire_tab(vector<int>& A);

答案 1 :(得分:1)

而不是按值接受vector

void lire_tab(vector<int> A)

您想接受vector by reference

void lire_tab(vector<int>& A)

否则,您只修改矢量的函数本地副本,而不是传入的原始矢量。