什么是vector< int > v(N)
?
这是一个最大尺寸为N
的数组(如vector<int> v
)吗?
与vector<int> v[N]
相同吗?
我认为这是第一个(如果我错了,请纠正我)。
什么是vector< vector< int > > V(N)
?它是否像最大尺寸为N
的2D数组?
vector < int > v[N]
和vector< vector< int > >v(N)
之间有什么区别?
答案 0 :(得分:10)
假设
N
是某种整数,#include <vector>
,using namespace std;
或using std::vector;
...... 这是类型v
的对象std::vector< int >
的声明,初始化为保存N
对象(类型为int
),默认初始化(即,不确定,因为int
是一个没有定义默认初始化的POD类型。)
Documentation of vector
constructors - 这是案例(2)。
Spiral rule - 这需要适应C ++,但仍然是一个良好的开端。
不“动态数组行vector v
”, 是矢量。
不,它不与vector v[N]
相同(甚至不会编译)。 与vector<int> v[N]
相同 - 这将是N
个不同vector<int>
个对象的数组。
现在,如果是第一个,那么
vector< vector< int > > V(N)
是什么?
因为第一个不,我还需要回答吗? :-D
vector< vector< int > > V(N);
这是V
类型的对象vector< vector< int > >
的声明,即“int-vectors的向量”,初始化为保存N
默认初始化对象...
...即,一个持有N
vector< int >
个对象的向量 - 这些对象又是空的(因为“空”是默认初始化的向量)。
C ++有......
int v[N];
),其工作方式与C数组完全相同。std::vector< int > v;
),其动态大小。std::array< int, N >;
),其大小与C数组一样是静态的,但确实提供了std::vector
的一些细节。您需要准确了解您所指的内容。这些是完全不同的类型,具有不同的功能集。
<强>更新强>
通过最新的几次修改,很明显您的真实问题是:
什么是
vector
?
它是一个C ++类模板,它实现了一个容器,可以容纳给定类型的连续元素(喜欢一个C数组),但是是动态大小的(不像一个C数组)。
一般来说,除了一些真正的特殊情况外,你不再在C ++代码中使用C数组了。您使用std::string
表示字符串,std::vector
表示(几乎)您在C中使用数组的所有其他内容。
答案 1 :(得分:2)
std::vector<int> v(N)
声明类型为v
的变量std::vector<int>
,并初始化向量的大小以保存默认初始化的N
整数,这意味着它们的初始值价值未定义。
std::vector
是来自C ++标准库的模板,它实现了一个可调整大小的数组,其元素在内存中连续存储。它本质上是C阵列的更安全的替代品。