C ++:std :: vector的保留容量,它位于另一个容器中

时间:2011-07-05 05:10:09

标签: c++ vector

我有以下要求,

std::vector< std::vector < std::string > > segments;
存在未知数量的段,但每个段的大小固定为1000.但是,我无法弄清楚如何根据我的要求声明变量

我试过了 std::vector< std::vector < std::string >(1000) > segments; // not working

提前致谢..

3 个答案:

答案 0 :(得分:5)

std::vector是一个动态容器,不允许您指定固定大小。作为替代方案,您可以查看Boost.Array(或TR1中的版本等):

typedef boost::array<std::string, 1000> Segment;
typedef std::vector<Segment> SegmentVec;
SegmentVec segments;

答案 1 :(得分:2)

你做不到。您必须循环并手动调用reserve。 (就此而言,vector内部还没有segments ..如何在不存在的向量中保留空间?:))

答案 2 :(得分:1)

只需使用1000 *段计数元素分配单个向量,并使用segment * 1000作为其中的偏移量。