调整结构中的向量的大小
resizing a vector which is in a struct
我定义了两个struct
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);
}
};
现在我想像v
一样将std::vector<spatialEntry>
的大小初始化为 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);
}
};
但是如果你使用resize
,那么最好这样做:
accumulationEntry() : pattern(16) //<--- note this
{
//pattern.resize(16);
}
即,使用成员初始化列表。也对foo
做同样的事情。
accumulationEntry
只是一个类型。您还没有该类型的对象,因此没有调整大小std::vector<spatialEntry>
。大概你会在你的accumulationTable
中添加accumulationEntry
s。你可以这样做:
accumulationTable.push_back(accumulationEntry());
完成此操作后,您可以调整包含在例如第 0 个元素中的vector
的大小,如下所示:
accumulationTable[0].pattern.resize(16);
或者,可以为accumulationEntry
提供一个构造函数,以调整其pattern
成员的大小:
struct accumulationEntry {
// ...
accumulationEntry()
{
pattern.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);
}
};
相关文章:
- 包含指向其他结构的指针向量的结构
- 的向量(具有向量的结构)
- 释放包含多个向量的结构的内存
- 包含自身向量的结构
- 使用向量和结构在C 中遇到错误
- 调整结构/字符数组的大小(以减少内存使用)
- 当迭代器添加到添加到列表向量的结构时,迭代器停止指向值?
- 将结构的向量推向结构
- C++有没有一种方法可以将向量调整为特定的字符
- 如何调整结构向量的大小
- 犰狳与 Boost Odeint 冲突:Odeint 在集成期间将状态向量调整为零
- 如何从数据文件读取到向量的结构
- 调整结构中的向量的大小
- 为结构的整个向量分配结构的元素
- 如何有效地用向量填充结构
- 使用BOOST_FUSION_ADAPT_STRUCT调整结构时编译器错误
- 将数据存储在结构向量的结构向量的映射中
- BAD_ALLOC错误实现向量调整大小函数时
- 与向量和结构一起工作
- 如何使用OpenCV将向量向量的结构复制到另一个向量C++