簡體   English   中英

在類中操縱vector的成員

[英]Manipulate members of vector in class

我正在開始編寫課程,並且有以下問題。 假設我有以下課程:

class foo
{
private:
    int bar;
public:
    foo(int bar): bar(bar){}
    void set_bar(int ubar){bar=ubar;}
    int get_bar(){return bar;}
};

現在,我想編寫一個包含foo實例的類。

class foo_cont
{
private:
    vector<foo> foo_vec;
public:
    foo_cont(){}
    void add_element(foo f1){foo_vec.push_back(f1);}
};

可以說我對foo_cont f1;進行了實例化foo_cont f1; 並用foo實例填充foo_vec 如何使用set_bar()修改foo_vec的元素?

編輯:由於我是堆棧溢出的新手,這可能是一個非常愚蠢的問題,但是為什么我會投票不足?

您可以為foo_cont類定義operator [] 例如

class foo_cont
{
private:
vector<bar> foo_vec;
public:
    // ...
    bar & operator []( size_t i )
    {
        return foo_vec[i];
    }   
    const bar & operator []( size_t i ) const
    {
        return foo_vec[i];
    }   
};

例如

for_cont[i].set_bar( 10 );

無論如何,如果要在類范圍之外更改向量的元素,則需要為它們提供訪問器。

如何使用set_bar()修改foo_vec的元素?

在類foo_cont

如果要在foo_cont向量的第一個元素上調用set_bar() ,則可以使用:

foo_vec[0].set_bar(10);

如果要在foo_cont向量的第n個(按索引)元素上調用set_bar() ,請使用:

foo_vec[n].set_bar(10);

按班級用戶

您可以通過運算符或對向量本身提供訪問器函數來提供對foo_vecn個元素的訪問。

bar& operator[]( size_t i )
{
    return foo_vec[i];
}   
bar const& operator[]( size_t i ) const
{
    return foo_vec[i];
}   

並將其用作:

foo_cont f1;
f1.add_element(10);
int a = f1[0].get_bar();

要么

std::vector<foo>& get_foo_vector()
{
   return foo_vec;
}

std::vector<foo> const& get_foo_vector() const
{
   return foo_vec;
}

並將其用作:

foo_cont f1;
f1.add_element(10);
int a = f1.get_foo_vector()[0].get_bar();

暫無
暫無

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

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