我在C ++中看到了很多关于矩形2-D数组的讨论,但与我正在使用的内容没有太大关系。我需要在固定数量的事情上保留相同的信息,所以我创建了一个结构,我想我想要一个矢量向量,所以我做了以下定义:
typedef struct sInfo {
int Length;
int RemainingReadLength;
int RemainingWriteLength;
bool FillFlag;
int Offset;
};
class InfoClass {
protected:
<vector<vector<sInfo> > vvInfo;
uint32 Index1;
uint32 Index2;
sInfo Info;
public:
InfoClass () : vvInfo(NUM_INFO) {}
void AddInfo() {
vvInfo[Index1].push_back(Info);
}
uint getLength () {
return (vvInfo[Index1][Index2].Length;
}
}
我在这里打算的是固定数量的行,每行都可以独立扩展或收缩。据我所知,ctor正在创建NUM_ID个空向量,至少在开始时,getLength可以正常工作。但是,AddInfo似乎有分配问题。
首先,这是处理问题的最佳方法吗?如果是这样,我是否正确处理这些动态分配的,粗糙的向量?
由于
答案 0 :(得分:0)
你的做法对我来说并不太糟糕。但是,如果您有固定的行数并且可以访问C ++ 0x / TR1,则可以使用std::(tr1::)array<T,N>
。
那么,你谈到的分配问题是什么?
答案 1 :(得分:0)
好吧,当你推入外部向量时,它可能会重新分配,这会导致所有内部向量被复制,这意味着它们会分配新内存,复制内容并释放旧内存。
然而:
.reserve()
它,则不会发生重新分配,因此无需担心。