如何在运行时确定向量大小
How can one determine vector size at run time?
在运行时,可以确定vector
的大小吗?
input: 25//显示向量大小
code :
int N ;
cin << N ;
vector <int> data[N];
您可能感兴趣的两个方法:
std::vector<T>::size
将返回vector中元素的个数std::vector<T>::capacity
将返回vector已分配内存的元素数
例子片段/strong>
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
我猜你在原始帖子中的示例片段至少包含一个错字,你不通过写下面的N
元素来声明std::vector<int>
。
你写的是数据是一个vector<int>
大小为N
的数组,如果在编译时N是已知的(或者如果在编译器中存在可变长度数组扩展),它将编译。
vector<int> data[N];
创建vector
并使其从一开始就插入N
元素:
std::vector<int> data (N);
您使用vector
(可能)错误的方式…这样,您就定义了一个包含N个向量的c风格数组(顺便说一下,该语法不是标准的,因为N需要在编译时已知),而您可能想要定义包含N
元素的vector
,这是这样完成的:
vector<int> data(N);
(调用vector
的单参数构造函数,构造一个默认初始化的数组N
elements 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);
Matteo是对的。只是为了补充他的答案。您不一定需要在运行时定义向量大小。我假设你正在使用c++。
你可以直接写
vector<int> data;
然后每次你想把元素移到vector的末尾时只需执行
data.push_back(<some integer>)
它不像数组,你需要在使用之前给它们一个大小。向量可以动态地增长和缩小。因此,您不需要关心内存分配。它由编译器和vector
类在运行时处理。
相关文章:
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 在 c++ 中将集合转换为向量和向量转换为字符串时出现运行时异常
- 当函数返回C++向量实例时,它正在运行
- 使用向量将给定表达式转换为波兰表示法时出现运行时错误
- 为同一向量C++运行多个线程时出现分段错误
- 在运行时开始时填充两个大向量
- 固定在运行时固定大小的std ::向量
- 大小在运行时确定的静态数组的向量
- 在运行时决定的固定大小的数组的向量
- C MFC慢速运行时使用2D向量
- 涉及向量的初学者代码,SEIGSEV运行时错误
- 类中向量的random_shuffle的c++运行时错误
- 如何在运行时填充Boost :: Fusion ::向量
- 如何在运行时才知道c++静态向量大小时指定该大小-不需要
- 在运行时C++将元素插入到向量中.引发运行时错误
- 在没有向量、指针的情况下,在c++中的运行时增加数组大小
- 使用向量时出现奇怪的运行时错误
- 显示向量 (C++) 时出现运行时错误
- 使用字符串向量初始值设定项时,我收到运行时错误"terminate called after throwing instance of `std::length_error`"
- 数组vs向量运行时的应用程序