在运行时,可以确定 a 的大小vector
吗?
例如
input : 25 // 显示向量大小
code :
int N ;
cin << N ;
vector <int> data[N];
在运行时,可以确定 a 的大小vector
吗?
例如
input : 25 // 显示向量大小
code :
int N ;
cin << N ;
vector <int> data[N];
您可能感兴趣的两种方法:
std::vector<T>::size
将返回向量中的元素数。
std::vector<T>::capacity
将返回向量为其分配内存的元素数。
示例片段
std::vector<int> v;
for (int i =0; i < 25; ++i)
v.push_back (i);
v.reserve (100);
std::cerr << "Elements: " << v.size () << std::endl;
std::cerr << "Capacity: " << v.capacity () << std::endl;
输出
Elements: 25
Capacity: 100
我猜您在原始帖子中的示例片段至少包含一个错字,您没有通过编写以下内容来声明 a std::vector<int>
with元素。N
你写的是 data 是一个vector<int>
size的数组,N
如果 N 在编译时已知(或者如果你的编译器中存在可变长度数组扩展),它将编译。
vector<int> data[N];
要创建一个vector
并使其N
从一开始就插入元素:
std::vector<int> data (N);
您正在vector
以(可能)错误的方式使用......这样您就定义了 N 个向量的 C 样式数组(顺便说一下,该语法不是标准的,因为 N 需要在编译时知道),而您可能想要定义一个vector
包含N
元素,这是通过这种方式完成的:
vector<int> data(N);
(它调用 的单参数构造函数vector
,构造一个默认初始化的数组N
元素 long)
要在运行时1获取它的大小,您只需调用它的方法size()
:
cout<<"The vector contains "<<data.size()<<" elements.\n"
vector
的大小(旨在存储在其中的元素数量)仅在运行时定义。你快到了:
利用
vector <int> data(N);
代替
vector <int> data[N];
如果您需要将向量的所有元素设置为零以外的值,例如-1
,使用vector <int> data(N, -1);
马特奥是对的。只是为了补充他的答案。您不一定需要在运行时定义矢量大小。我假设您使用的是 c++。
你可以写
vector<int> data;
然后每次你想元素到向量的末尾就做
data.push_back(<some integer>)
它不像数组,您需要在使用前给它们一个大小。向量可以动态增长和缩小。所以,你不需要关心内存分配。它vector
在运行时由编译器和类处理。