迭代器和*迭代器类型
Iterator and *Iterator type
如果我有一个容器的迭代器,里面有未知的类,我可以通过以下方式声明一个未知类型的变量吗:
*Iterator unknown_type_var;
unknown_type具有默认 ctor,所以这不是问题所在。但是这样的方法存在吗?或者有没有其他方法可以声明我有一个容器迭代器的类型变量,它保存了这个类型。
如果它是一个符合标准的容器,它有一个名为 value_type
的嵌套 typedef,它给出了所包含值的类型。该typedef也可以通过iterator_traits获得:std::iterator_traits<iterator_type>::value_type
。迭代器类型可用,你猜对了,容器中的嵌套 typedef。
如果您没有
可用的value_type
,并且由于您没有立即分配而无法使用auto
(尝试找到一种方法),那么您可以使用 decltype:
decltype(*declval<Iterator>()) unknown_type_var;
相关文章:
- 如何在c++迭代器类型中包装std::chrono
- 定义模板参数的迭代器类型
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- C++不兼容的迭代器类型
- 如何推导 std::高级迭代器类型?
- 在 stl 容器包装器中定义迭代器类型
- 矢量迭代器类型未知
- STD ::向量迭代器类型和允许的操作
- 检查容器模板类中的迭代器类型
- 如何断言模板参数的类型 STL 迭代器类型
- 检测容器是否具有迭代器类型
- 由set2.begin()返回的迭代器类型
- 序列容器的迭代器类型是什么?
- 如何推断嵌套最多的迭代器类型
- 为什么迭代器类型与矢量容器中的 value_type * 不匹配
- ISO C++禁止声明没有自动迭代器类型的“it”
- 使用的迭代器类型错误
- 列表的迭代器类型
- 如何打印迭代器类型列表<pair<int,int>>::iterator itrator it指向的元素
- 为什么 void* 不是迭代器类型?