在类中操作向量的成员
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;
的instace,并用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
-th(按索引)元素上调用 set_bar()
,请使用:
foo_vec[n].set_bar(10);
由类的用户
您可以通过运算符函数或通过向量本身提供访问器函数来提供对foo_vec
的第 n
个元素的访问。
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();
相关文章:
- C++:从其他类访问结构的私有成员向量
- 访问类成员向量最后一项的正确方法
- 将字符串推送到私有成员向量
- 访问其他类中多个对象的私有成员向量
- 如何在类的构造函数中定义成员向量的大小
- 如何对类成员向量进行排序
- 从向量中擦除元素是否也会擦除元素中存在的所有成员向量
- 尝试从成员函数推送时不维护元素的成员向量
- C++ |无法将项添加到类成员向量
- 如何创建过滤流的成员向量
- 使用大型数据集初始化类成员向量的最有效方法
- 将C 成员向量包裹为Python命令
- 尝试保存到成员向量的连接-一次只保存一个
- 类成员向量上的迭代器未正确取消引用
- 如何在c++11中返回类成员向量
- 初始化构造函数C++中的成员向量
- 将类成员向量的内容复制到另一个向量中,然后将其交换回
- 推送到成员向量时的隔离错误
- 在堆上创建多态对象的数据成员向量
- 将此指针推回专用静态成员向量