C++ 调整结构中向量的大小
我定义了两个C++ 调整结构中向量的大小,c++,vector,C++,Vector,我定义了两个structs class foo() { public: struct spatialEntry { bool block; CoherenceState_t state; }; struct accumulationEntry { uint64_t offset; std::vector<spatialEntry> pattern; }; std::vector
struct
s
class foo() {
public:
struct spatialEntry {
bool block;
CoherenceState_t state;
};
struct accumulationEntry {
uint64_t offset;
std::vector<spatialEntry> pattern;
};
std::vector<int> v;
std::list<accumulationEntry> accumulationTable;
foo() {
v.resize(16);
}
};
class foo(){
公众:
结构空间测量{
布尔块;
相干状态;
};
结构累加熵{
uint64_t偏移量;
std::矢量模式;
};
std::向量v;
std::列表累加表;
foo(){
v、 调整大小(16);
}
};
现在我想将std::vector的大小初始化为16,就像
v
一样。我怎样才能做到这一点呢?AccumerationEntry
只是一种类型。您还没有该类型的对象,因此没有要调整大小的std::vector
。您可能会将acculationentry
s添加到acculationtable
中。您可以这样做:
accumulationTable.push_back(accumulationEntry());
完成此操作后,可以调整包含在例如第0个元素中的向量的大小,如下所示:
accumulationTable[0].pattern.resize(16);
或者,您可以为AccumerationEntry
提供一个构造函数,用于调整其模式
成员的大小:
struct accumulationEntry {
// ...
accumulationEntry()
{
pattern.resize(16);
}
};
AccumerationEntry
只是一种类型。您还没有该类型的对象,因此没有要调整大小的std::vector
。您可能会将acculationentry
s添加到acculationtable
中。您可以这样做:
accumulationTable.push_back(accumulationEntry());
完成此操作后,可以调整包含在例如第0个元素中的向量的大小,如下所示:
accumulationTable[0].pattern.resize(16);
或者,您可以为AccumerationEntry
提供一个构造函数,用于调整其模式
成员的大小:
struct accumulationEntry {
// ...
accumulationEntry()
{
pattern.resize(16);
}
};
只需为包含该成员的类定义构造函数,然后将resize()
定义为:
class foo() {
public:
//...
struct accumulationEntry
{
uint64_t offset;
std::vector<spatialEntry> pattern;
accumulationEntry()
{
pattern.resize(16); //<--------- this is what you want?
}
};
std::vector<int> v;
std::list< accumulationEntry > accumulationTable;
foo()
{
v.resize(16);
}
};
也就是说,使用成员初始化列表。对foo
也执行同样的操作。只需为包含该成员的类定义一个构造函数,然后将resize()
定义为:
class foo() {
public:
//...
struct accumulationEntry
{
uint64_t offset;
std::vector<spatialEntry> pattern;
accumulationEntry()
{
pattern.resize(16); //<--------- this is what you want?
}
};
std::vector<int> v;
std::list< accumulationEntry > accumulationTable;
foo()
{
v.resize(16);
}
};
class foo() {
public:
struct spatialEntry {
bool block;
CoherenceState_t state;
};
struct accumulationEntry {
accumulationEntry()
: pattern(16) // Calling pattern's c'tor
{
}
uint64_t offset;
std::vector<spatialEntry> pattern;
};
std::vector<int> v;
std::list< accumulationEntry > accumulationTable;
foo()
{
v.resize(16);
}
};
也就是说,使用成员初始化列表。对foo
也执行同样的操作。class foo(){
class foo() {
public:
struct spatialEntry {
bool block;
CoherenceState_t state;
};
struct accumulationEntry {
accumulationEntry()
: pattern(16) // Calling pattern's c'tor
{
}
uint64_t offset;
std::vector<spatialEntry> pattern;
};
std::vector<int> v;
std::list< accumulationEntry > accumulationTable;
foo()
{
v.resize(16);
}
};
公众:
结构空间测量{
布尔块;
相干状态;
};
结构累加熵{
累加熵()
:pattern(16)//调用模式的命令
{
}
uint64_t偏移量;
std::矢量模式;
};
std::向量v;
标准::列表<累计输入>累计表;
foo()
{
v、 调整大小(16);
}
};
class foo(){
公众:
结构空间测量{
布尔块;
相干状态;
};
结构累加熵{
累加熵()
:pattern(16)//调用模式的命令
{
}
uint64_t偏移量;
std::矢量模式;
};
std::向量v;
标准::列表<累计输入>累计表;
foo()
{
v、 调整大小(16);
}
};
所以我必须这样做,以便每一件物品我都推回。对吗?@mahmood如果你给AccumerationEntry
一个构造函数来调整的大小
,那么你就不必手动操作了。所以我必须让每一项都返回。对吗?@mahmood如果你给AccumerationEntry
一个构造函数来调整大小
,那么你就不必手动操作了。