2D矢量声明之间的差异

时间:2014-07-11 21:02:54

标签: c++ vector

这可能听起来很简单,但我有点困惑。我想知道的是c ++中这两个向量声明之间的区别。

vector<  vector<int> >a(some_size)

vector<int>b[some_size]

我想知道我们可以使用其中一个而不是其他一个的情况。请提供除固定大小的数组和可变大小的向量之外的其他情况。请提供示例代码以证明您的观点。

提前致谢。

4 个答案:

答案 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风格数组安全地执行所有相同的过程。