gpt4 book ai didi

c++ - 为什么第二次初始化工作而第一次初始化因为 "element type does not match"而失败?

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:53 24 4
gpt4 key购买 nike

在 c++ primer-initializing 一个容器作为另一个容器的拷贝。

新容器和原始容器中的元素类型可以不同,只要可以将我们正在复制的元素转换为我们正在初始化的容器的元素类型即可。

例如:

vector<const char*> articles = {"a", "an", "the"};
vector<string> words(articles) ; //error:element types must match
forward_list<string> words(articles.begin(), articles.end()); // ok, convert const char* to string

我的问题是,为什么第二次初始化工作,而第一次失败,因为元素类型不匹配?

最佳答案

第一行使用与元素类型 (const char*) 相同类型的 initializer_list 调用构造函数。像这样:

vector<T>(initializer_list<T> t ) {....} 

--> 好的!

第二个是复制构造函数调用,它只为相同的元素类型定义。

vector<T>(const& vector<T> t) {...}

你所做的是这样的:

vector<string>(const& vector<const char*> t){..}

--> 哪个不存在!

关于c++ - 为什么第二次初始化工作而第一次初始化因为 "element type does not match"而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916285/

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