vector <int> v(N)和vector <int> v [N]之间有什么区别?

Sam*_*rma -10 c++ arrays stl vector

什么是vector< int > v(N)

  1. 它是一个可以具有最大尺寸N(如vector<int> v)的数组吗?

  2. 和它一样vector<int> v[N]吗?

我认为这是第一个(如果我错了,请纠正我).

什么是vector< vector< int > > V(N)?它是否像最大尺寸的2D阵列Nvector < int > v[N]和之间有什么区别vector< vector< int > >v(N)

Dev*_*lar 11

假如说

  • N 是某种整数,
  • 有一个#include <vector>地方,
  • 有一个using namespace std;using std::vector;某个地方......

这是一个v类型的对象的声明std::vector< int >,初始化为保存N对象(类型int),这些对象是默认初始化的(即,不确定,因为int是没有定义默认初始化的POD类型).

vector构造函数的文档 - 这是案例(2).

螺旋规则 - 需要一些适应C++,但仍然是一个良好的开端.

它是不是 "动态阵列线vector v",它一个载体.

不,这是一样的vector v[N](这甚至不会编译).它是 没有一样vector<int> v[N]-这将是阵列N不同vector<int>的对象.


现在,如果它是第一个,那么是什么vector< vector< int > > V(N)

既然它不是第一个,我还要回答这个问题吗?:-D

vector< vector< int > > V(N);
Run Code Online (Sandbox Code Playgroud)

这是V类型对象的声明vector< vector< int > >,即"int-vectors的向量",初始化为保存N默认初始化对象...

...即,一个包含N对象的向量vector< int >- 它们又是空的(因为"空"是默认初始化向量).


C++有......

  • 所述阵列(int v[N];),其工作方式C数组酷似.
  • 所述的std ::矢量(std::vector< int > v;),其大小为动态的.
  • 所述的std ::阵列(std::array< int, N >;),这是在象C数组大小静态的,但确实提供一些细微的std::vector.

你需要确切地了解你所指的是什么.这些是完全不同的类型,具有不同的功能集.


更新:

通过最近几次编辑,很明显您的真正问题是:

什么是vector

它是一个C++类模板,它实现了一个容器,它可以容纳给定类型的连续元素( C数组),但是是动态大小的( C数组不同).

请参阅文档.

一般来说,除了一些非常特殊的情况外,你不再使用C++代码中的C数组了.你std::string用于字符串,以及std::vector(几乎)你在C中使用数组的所有其他内容.