我有一个用户输入的字符串,例如“ 5 6.3 foo 2.1”。字符串中的每个单词或数字(例如5或6.3)可以具有不同的类型。我想以最省时的方式(在线性时间内)将此用户输入的字符数组转换为元组。我不知道字符串中单词或数字的数量,因此我不预先知道元组中应该包含的元素数量。我所知道的是,元组的长度将小于预定义的限制,比方说它是10000个元素。我相信std :: tuple_cat函数可用于执行类似数组的连接,并且我可以使用它将每个元素一个一个地添加到元组中。我不喜欢这个主意,因为如果std :: tuple_cat像数组串联一样工作,那么每次调用tuple_cat(n平方时间)时,都需要复制容器中的每个元素。我更愿意为元组保留或预先分配一个例如100kb的存储空间,并将添加到元组的新元素放入该预分配的存储空间中,而不必复制其他任何元素。有没有办法在线性时间内将用户输入的字符串转换为元组?
使用std :: tuple并不是真正有效的方法。它们是一个编译时结构,您想在运行时确定元组中的类型。这样做的唯一方法是预先实例化类型的每个排列,直到最大元素数量,这将是一个很大的数目...
听起来你真正想要的是一个类似的东西std::vector<boost::variant<int, double, std::string...>>
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句