如何在运行时确定矢量大小?

4 c++ vector stdvector c++-standard-library

在运行时,可以确定一个vector?的大小?

例如

输入:25 //显示矢量大小

  code :
        int N ;
        cin << N ;
        vector <int> data[N];
Run Code Online (Sandbox Code Playgroud)

Fil*_*efp 13

您可能感兴趣的两种方法:

示例代码段

  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;
Run Code Online (Sandbox Code Playgroud)

产量

Elements: 25
Capacity: 100
Run Code Online (Sandbox Code Playgroud)

我猜测,在原岗位的例子段包含至少一个错字,你不声明std::vector<int>N通过写下面的元素.

你写的是数据是一个vector<int>大小的数组,N如果N在编译时已知(或者你的编译器中存在可变长度数组扩展),它就会编译.

vector<int> data[N];
Run Code Online (Sandbox Code Playgroud)

要创建一个vector并使其N从一开始就插入元素:

std::vector<int> data (N);
Run Code Online (Sandbox Code Playgroud)


Mat*_*lia 9

你正在vector以(可能)错误的方式使用...这样你就可以定义一个N向量的C风格数组(顺便说一下,这种语法不是标准的,因为N需要在编译时知道),而你可能想要定义一个vector包含N元素,这是这样做的:

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

(调用单参数构造函数vector,构造一个默认初始化的数组N元素long)

要在运行时1获取其大小,您只需调用其方法size():

cout<<"The vector contains "<<data.size()<<" elements.\n"
Run Code Online (Sandbox Code Playgroud)
  1. 实际上,在编译时询问它的大小甚至没有意义,因为它vector的大小(用作存储在其中的元素的数量)仅在运行时定义.