如何获得向量中元素的类型?

用户名

如果有的话,考虑模板元编程技术

std::vector<int> v;
v.push_back(42.42f);

这行得通,主要是因为所使用的构造函数未标记explicit,换句话说,我push_back的类型不安全。

现在,我什至不知道如何v声明容器(在这种情况下是这样)int,但是我需要在拥有泛型的同时自动推断类型std::vector<T>我想要一个解决方案T

在C ++ 11中,有一个类似的东西remove_all_extents(带有一个有用的成员type),但显然它仅对旧数组有用,但这基本上是我想要实现的目标。

push_back它不是类型安全或推断类型时,我想触发一个错误,以便我可以自己编写断言或实现某些东西。

我真的找不到适合的解决方案,它在理论上是如此简单,但是一旦声明了向量,就没有关于元素类型的明确信息。

我还想避免显式类型推断,例如foo从理想的函数调用中进行翻译

foo( container, elements ... )

foo<int>(container, elements ...)

我认为这的int元素的类型在哪里container也不安全,它也比较冗长且容易出错。

那么如何在C ++ 11中检索容器元素的类型?

juanchopanza

您可以得到如下类型:

typename std::vector<T>::value_type;

然后static_assert与一起使用std::is_same

template <typename T1, typename T2>
void special_push_back(std::vector<T1>& v, T2 elem)
{
  // check that T1 and T2 are the same before pushing elem into v
}

然后

std::vector<int> v;
special_push_back(v, 3.14); // Compile time error: double is not int

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何返回向量中元素的索引

来自分类Dev

如何使用指针算法获取向量中元素的索引?

来自分类Dev

如何获取R中字符向量中元素的长度?

来自分类Dev

查找向量中元素的索引

来自分类Dev

查找向量中元素的数量

来自分类Dev

r - 向量中元素的组合

来自分类Dev

如何在dotty中解开元组中元素的类型?

来自分类Dev

如何获取已声明的TList中元素的类型

来自分类Dev

列表模型中元素的类型

来自分类Dev

获取硒中元素的类型

来自分类Dev

术语 - HTML 中元素的类型

来自分类Dev

如何获取嵌套向量中的元素类型?

来自分类Dev

方案:找出向量中元素的频率

来自分类Dev

在Matlab中找到向量中元素的等级

来自分类Dev

更改R中向量中元素的顺序

来自分类Dev

编码R中向量中元素的变化

来自分类Dev

向量中元素出现的次数[JULIA]

来自分类Dev

一个应该如何获得列表重复元素的索引,其中元素是列表?

来自分类Dev

如何使用np.argmax计算一个向量中元素之间的最大差?

来自分类Dev

如何比较R中两个向量中元素的顺序?

来自分类Dev

如何在另一个向量R中找到一个向量中元素的索引

来自分类Dev

如何获得包含另一个列表中元素的所有可能组合的列表?

来自分类Dev

如何获得列表中元素的第二个单词

来自分类Dev

DataFrame的列中元素的混合类型

来自分类Dev

Python ctypes:ctype 数组中元素的类型

来自分类Dev

如何从 Spark Scala 中元组类型的迭代器中找到元素的总和?

来自分类Dev

如何获得一个向量,该向量标识元素在R中属于哪个间隔

来自分类Dev

如何在sbcl(或通用lisp)的向量中指定元素类型?

来自分类Dev

如何正确指定可调向量的元素类型

Related 相关文章

热门标签

归档