对于你们中的一些人来说这可能是个简单的问题.但我想知道std :: string是否是一个容器.容器我的意思是容器,例如std :: vector,std :: list和std :: deque.
由于std :: basic_string<>接受除整数字符以外的其他类型,但也通过使用字符数组进行优化.我不清楚它属于哪个类别.
这将编译:
#include <string> #include <iostream> int main() { std::basic_string<int> int_str; int_str.push_back(14); return 0; }
但是通过添加这一行:
std::cout << int_str << std::endl;
它不会.因此,通过这些事实,我可以得出结论,std :: basic_string不适用于除字符之外的其他类型.
这对你来说可能是一个奇怪的问题.我需要知道这个的原因是因为我正在研究一个框架而我仍然无法确定“字符串”会落在哪个类别中.
解决方法
是的,
std::basic_string
模板满足
Container
concept的所有要求.但是,我认为它对所包含的类型有更强的要求.只是想弄清楚究竟是什么.
(这不是Bjarne的概念.只是标准中标有“23.2.1一般容器要求”.)