这可能听起来很简单,但我有点困惑。我想知道的是c ++中这两个向量声明之间的区别。
vector< vector<int> >a(some_size)
vector<int>b[some_size]
我想知道我们可以使用其中一个而不是其他一个的情况。请提供除固定大小的数组和可变大小的向量之外的其他情况。请提供示例代码以证明您的观点。
提前致谢。
答案 0 :(得分:5)
第二个是向量数组。必须在编译时知道数组的大小。第一个是矢量矢量。大小可以在运行时更改。
如果您尝试寻找共性,可以说两者都是具有相同value_type和category(RandomAccessIterator)的范围。
答案 1 :(得分:1)
我的观点是,这两者都可以被理解为载体的载体。
绝对不是:vector<vector<int>>a(some_size)
是向量的向量。 vector<int>b[some_size]
是一组向量。
主要区别是vector<int>b[some_size]
是固定大小的,vector<vector<int>>a(some_size) is dynamic, meaning you can
push_back other
vector`并且通常操纵其元素(例如,删除它们,插入其他元素等)。
答案 2 :(得分:0)
矢量和C风格数组之间的主要区别在于矢量没有固定大小(即可以调整大小)。类似的东西也可以用C指针实现,但更复杂,你需要保持尺寸等等。
您的第一个代码行会创建整数的“some_size”向量 这些int向量中的每一个都可以具有自己的大小(与其他向量不同) 你也可以添加/删除整个向量。
第二行不允许添加/删除矢量。
答案 3 :(得分:0)
@pmr,@ 40two和@deviantfan是对的。第一个是矢量,矢量作为元素。第二个是c样式的向量数组。
我认为考虑这个问题的最好方法就是查看数组和向量之间的差异,这个问题很好地解决了这个问题:Arrays vs Vectors: Introductory Similarities and Differences
您决定使用其中一个是否需要完整vector
对象的功能,或者您是否可以使用简单的c风格数组安全地执行所有相同的过程。