在运行时,可以确定 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在运行时由编译器和类处理。