Utk*_*pta 2 c++ template-argument-deduction c++17
在C ++中,如果我这样做:
std::vector words {"some","test","cases","here"};
谁能解释为什么words不是一种std::vector<std::string>容器?
C ++是否应该通过我提供的初始化列表来推断类型?
如果“ some”,“ test”不是字符串文字,那么std :: string文字看起来像什么?
一个字符串文字一样"something",是一个C-字符串。它创建一个const char[N]具有静态存储持续时间的,其中N是字符数加上一个空终止符。这意味着当你做
std::vector words {"some","test","cases","here"};
您要做的是创建一个a,std::vector<const char*>因为数组可以衰减到指针。
如果您想要a,std::vector<std::string>那么您需要使用std::string用户定义的文字。看起来像
using namespace std::string_literals;
std::vector words {"some"s,"test"s,"cases"s,"here"s};
现在您实际上拥有std::string,编译器将用来推断向量的类型。
| 归档时间: | 
 | 
| 查看次数: | 94 次 | 
| 最近记录: |