为什么向量可以像数组一样被实例化?
Why can vectors be instantiated like arrays?
我在我的 C++ class 中学习了 classes,并且我试图理解一些关于我使用过的常见 classes 的事情。其中之一是矢量。我查看了 Cplusplus.com 上的矢量参考,但有一件事我不太明白,而且在网上找不到答案。当使用预定值制作新向量时,可以执行以下操作:
vector<int> vect = {1,2,3,4,5};
cout<< vect.at(2);
让我感到困惑的是,我不知道它是如何工作的,也不知道如何在我自己的 class 中复制它。我查看了向量 class 的构造函数,但没有看到任何似乎与这种方式的实例化相关的内容。 vector<int> vect(6)
之类的东西对我来说很有意义,因为它只是创建一个默认大小为 6 的向量,但我上面提到的方式与我迄今为止所见所闻的方式非常不同。
所以我的问题是:如何以这种方式实例化向量,它的构造函数是什么样的?
这使用了 std::initializer_list。就像 "string"
形成字符串一样,{element1, element2, ...}
形成可以转换为向量或其他数据类型的初始化列表。
例如,我们可以手动构造一个数组,执行以下操作:
int w[4];
auto x = {1, 2, 3, 4}; //type is std::initializer_list
int count = 0;
for(auto i : x){
w[count] = i;
count++;
}
我在我的 C++ class 中学习了 classes,并且我试图理解一些关于我使用过的常见 classes 的事情。其中之一是矢量。我查看了 Cplusplus.com 上的矢量参考,但有一件事我不太明白,而且在网上找不到答案。当使用预定值制作新向量时,可以执行以下操作:
vector<int> vect = {1,2,3,4,5};
cout<< vect.at(2);
让我感到困惑的是,我不知道它是如何工作的,也不知道如何在我自己的 class 中复制它。我查看了向量 class 的构造函数,但没有看到任何似乎与这种方式的实例化相关的内容。 vector<int> vect(6)
之类的东西对我来说很有意义,因为它只是创建一个默认大小为 6 的向量,但我上面提到的方式与我迄今为止所见所闻的方式非常不同。
所以我的问题是:如何以这种方式实例化向量,它的构造函数是什么样的?
这使用了 std::initializer_list。就像 "string"
形成字符串一样,{element1, element2, ...}
形成可以转换为向量或其他数据类型的初始化列表。
例如,我们可以手动构造一个数组,执行以下操作:
int w[4];
auto x = {1, 2, 3, 4}; //type is std::initializer_list
int count = 0;
for(auto i : x){
w[count] = i;
count++;
}