c++ - 我们如何打印出 C++ STL 容器的 value_type?

标签 c++ stl

我知道 STL 容器有一个 value_type 参数,并且我已经看到如何使用它来声明变量的类型,例如:

vector<int>::value_type foo;

但是我们可以将这个 value_type 打印到控制台吗?

我想在这个例子中看到“字符串”:

int main() {
    vector<string> v = {"apple", "facebook", "microsoft", "google"};
    cout << v << endl;
    cout << v.value_type << endl;
    return 0;
}

最佳答案

X::value_type 在这方面与任何其他类型别名(又名 typedef)没有什么不同——C++ 没有将类型转换为其源代码字符串表示的 native 方法(至少是因为这可能是模棱两可的)。你可以做的是使用 std::type_info::name:

cout << typeid(decltype(v)::value_type).name() << endl;

生成的文本取决于编译器(甚至不能保证易于人类阅读)。它在程序的同一个版本中是一致的,但你不能期望它在不同的编译器中是相同的。换句话说,它对调试很有用,但不能以持久的方式可靠地使用。

关于c++ - 我们如何打印出 C++ STL 容器的 value_type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146507/

相关文章:

c++ - 堆放容器时的大O

c++ - end() 以何种方式指向非连续容器中的 'one past the end'?

c++ - 对 vector 进行排序而不改变原始 vector 的最佳方法是什么?

c++ - 使用Lua和C++管理堆栈

c++ - 高效/优雅的二维容器

c++ - 模板参数比较为假时调用的 if 语句

c++ - 使用像 emwin QT 这样的 c/c++ 制作的具有自定义 GUI 的 Flash android 平板电脑

c++ - 删除动态数组时会发生什么?

c++ - std::thread 完成函数

c++ - <cstdint> 与 std::size_t 类型