可以将std :: list <char>转换为c ++中的std :: list <int>

时间:2019-05-12 14:52:32

标签: c++

我在Uni Home工作中遇到这个问题。能否将std:list-char转换为c ++中的std:list-int。我希望能尽快得到您的正确答案。

1 个答案:

答案 0 :(得分:1)

不可能像这样简单地做到这一点:

std::list<char> charList {1, 2, 3, 4};
std::list<int> int list = charList; //compiler error

但是您可以“手动”将列表重新构造为std::list<int>see it online):

std::list<char> charList {1, 2, 3, 4};
std::list<int> intList(charList.begin(), charList.end());

使用std::list的迭代器构造函数时,编译器只能执行一次转换:char-> int。一种隐式转换非常好,因此可以正常工作。但是std::list<char>std::list<int>从编译器的角度来看是完全不相关的类型,因此它不知道如何将它们转换为另一种。