gpt4 book ai didi

c++ - 是否可以从数组初始化字符串 vector ?如果是这样,如何?

转载 作者:行者123 更新时间:2023-12-03 10:05:18 26 4
gpt4 key购买 nike

例如,在 GeeksForGeeks.org 上,贡献用户“Kartik”提供了以下用于初始化整数 vector 的示例:

// CPP program to initialize a vector from 
// an array.
#include <bits/stdc++.h>
using namespace std;

int main()
{
int arr[] = { 10, 20, 30 };
int n = sizeof(arr) / sizeof(arr[0]);

vector<int> vect(arr, arr + n);

for (int x : vect)
cout << x << " ";

return 0;
}
如果我理解正确阅读的内容, sizeof(arr)是一些数字(我假设它是数组的长度 arr ;即 3,如果我错了,请纠正我)除以 sizeof(arr[0]) (我假设它是 1)——基本上只是一种说 3/1 = 3 的迂回方式。
此时, vector<int> vect(arr, arr + n)似乎是一个大小为 3 的 vector ,所有值都初始化为 arr + n (我假设这是一种说法:“使用 arr 中的 3 个项目来实例化;同样,如果我错了,请纠正我)。
通过任何巫术,输出都是 10 20 30 .
现在,无论我上面的任何杂乱无章是否连贯甚至远程正确,我的主要问题是:是否可以使用相同的技术来实例化一些示例 vector<string> stringVector这样它就会遍历一些示例指定的字符串 string stringArray[] = { "wordA", "wordB", "wordC" } ?因为,据我所知,字符串没有数值,所以我想只说 vector<string> stringVector(stringArray, stringArray + n) 会很困难。没有遇到一些时髦的垃圾。那么,如果可能的话,人们将如何去做呢?
作为骑手, 为什么 ,或者在什么类型的情况下,有人想为 vector 做这个吗?从数组(据我所知它具有恒定大小)实例化它是否会破坏 vector 的目的?
免责声明,我是 C++ 的新手,而且很多面向对象的语法都涉及 std::vector<_Ty, _Alloc>::vector 之类的东西。 ...等等。对我来说完全没有意义,所以我可能需要在答案中解释。
感谢阅读本文的人,感谢您抽出宝贵时间。我希望你过得愉快!

最佳答案

说明:

  • sizeof(arr) : 返回数组的字节大小,它是 12,因为它有 3 int s 和每个 int在大多数实现中,大小为 4 个字节,因此 3 个字节 x 4 = 12 个字节。
  • sizeof(arr[0]) : 返回数组第一个元素的字节大小,它是 4 因为它是一个 int大批。
  • vector<int> vect(arr, arr + n) : vector 类有 multiple constructors .在这里,我们没有使用您正在考虑的构造函数。我们正在使用一个构造函数,它接受一系列元素的开始和结束迭代器,制作这些元素的拷贝。指针可以用作迭代器,在这种情况下 arr是开始迭代器和 arr + n是结束迭代器。

  • 注: int* + int返回 int* .
    注意:我们还应该考虑数组的“结尾”是指向数组中最后一项之后的下一个空格的指针,构造函数将复制除末尾项之外的所有项。
    link
    回答:
    是的,请记住,这里的构造函数采用迭代器,而不是数组的任何项目,因此我们可以轻松地做到这一点,只需稍作改动:
    #include <bits/stdc++.h>
    using namespace std;

    int main()
    {
    // changed int to string and the array values
    string arr[] = { "one", "two", "three" };
    int n = sizeof(arr) / sizeof(arr[0]);

    // changed int to string
    vector<string> vect(arr, arr + n);

    // changed int to string
    for (string x : vect)
    cout << x << " ";
    return 0;
    }

    关于c++ - 是否可以从数组初始化字符串 vector ?如果是这样,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65570935/

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