【发布时间】:2013-06-23 09:58:18
【问题描述】:
对于你们中的一些人来说,这可能是一个简单的问题。但我想知道 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 不适用于字符以外的其他类型。
这对你来说可能是一个奇怪的问题。我需要知道这一点的原因是因为我正在开发一个框架,但我仍然无法确定“字符串”将属于哪个类别。
【问题讨论】:
-
严格来说,它不是标准容器库的一部分。但是把它放在哪个类别取决于你想用它做什么:在很多方面,一个字符串看起来很像一个容器。
-
它不够通用,不能成为合适的容器。您不能从
struct X或float生成字符串。 -
标准有一个
Container概念。这就是我们可以对这个问题使用的最佳定义。 -
@MatsPetersson 为什么你不能创建一个
float的字符串? -
@curiousguy 我怀疑它是否有效,因为用于字符串的
char_traits没有为float类型定义。 [也比较奇怪,你把A和B“之间”这个字符怎么办?]
标签: c++ containers stdstring