gpt4 book ai didi

c++ - 用数组的一部分初始化 vector ?

转载 作者:太空狗 更新时间:2023-10-29 19:40:48 25 4
gpt4 key购买 nike

int arr[5] = {0,1,2,3,4};
vector<int> vec;

通常我们这样做:

vector<int> vec(arr, arr + sizeof(arr) / sizeof(int));

但是如何仅使用 arr 的前 3 个值来初始化 vector vec?另外,如何使用中间的 3 个值对其进行初始化?

我必须马上初始化它,多行没有 push_back..

最佳答案

你正在调用的构造器形式是这样的**:

template <class Iterator> vector(Iterator start, Iterator end);

因此,您可以传入任何类似于一对迭代器的东西。具体来说,您可以传入两个指针,只要它们都指向同一个数组,并且只要第二个指针不在第一个指针之前(如果指针相等,则它们代表一个空范围)。

在您的示例中,您传入一个指向数组第一个元素的指针和一个指向数组最后一个元素之后的(神秘的)元素的指针:

vector<int> vec(arr, arr + sizeof(arr) / sizeof(int));

通常,您可以传入指向任何元素的指针作为开始,将经过任何元素的指针作为结束。

but how do I initialize a vector vec with only first 3 values of arr?

传入指向第一个和第三个元素的指针:

vector<int> vec(arr, arr+3);

Also how do I initialize it with middle 3 values?

传递指向您要复制的第一个项目的指针,以及指向粘贴最后一个元素的指针。在这种情况下,索引 1 和 4:

vector<int> vec(arr+1, arr+4);


** <子>好的, it is slightly more complicated than that , 但为了讨论的缘故假装是可以的。实际形式是: template <class InputIterator>
vector( InputIterator first, InputIterator last,
const Allocator& alloc = Allocator() );

关于c++ - 用数组的一部分初始化 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com