从保存变量数据类型的数据结构中检索值,而无需指定返回类型

时间:2019-04-29 13:47:54

标签: c++ boost

我当前正在使用具有字符串数据类型作为键和变量值的映射。我依赖boost :: variant库来定义地图数据类型。我目前正在关注关于boost :: variant的一些教程,该教程用于从映射中提取值,而不必指定要在迭代过程中检索的确切数据类型值。 来源:https://theboostcpplibraries.com/boost.variant 我想要类似上一示例的通用数据类型的示例,但不是打印值而是返回它们。 以下似乎无法正常工作。

struct output : public boost::static_visitor<>
{
  template <typename T>
  T operator()(T t) const { return t }
};

我还实例化了一个映射,同时使用字符串数据类型作为键并使用boost :: variant类型作为值来填充它;然后遍历地图并处理值。

std::map<std::string,boost::variant<int, double, long long, std::string>> _keyPairValue;

for(auto &x: _keyPairValue)
{
  // appending a key pair value to a bson object which is part of mongo sdk
  b << x.first << boost::apply_visitor(output{},x.second);
}

1 个答案:

答案 0 :(得分:1)

  

我想要类似上一示例的通用数据类型,但不是打印值而是返回它们。

您可能想让import org.apache.spark.sql.expressions.Window val w = Window.partitionBy($"sess").orderBy($"timestamp") val df1 = df.withColumn("lagged", lag($"id", 1).over(w)) df1.select("id", "lagged").groupBy($"id").agg(collect_list($"lagged").as("id_list")).show //+---+--------------------+ //| id| id_list| //+---+--------------------+ //| tt| [yy]| //| xx| []| //| zz| []| //| yy| [zz, xx]| //+---+--------------------+ 重载,例如:

operator()