gpt4 book ai didi

c++ - 我可以为 C++11 std::tuple 预分配一 block 内存吗?

转载 作者:行者123 更新时间:2023-11-27 23:11:56 26 4
gpt4 key购买 nike

我有一个用户输入的字符串,例如“5 6.3 foo 2.1”。字符串中的每个单词或数字,如 5 或 6.3,可以有不同的类型。我想以最省时的方式(线性时间)将这个用户输入的字符数组转换为元组。我不知道字符串中单词或数字的数量,所以我事先不知道元组中应该包含的元素数量。我所知道的是元组的长度将小于预定义的限制,假设它是 10000 个元素。我相信 std::tuple_cat 函数可用于执行类似数组的串联,并且我可以使用它将每个元素一个一个地添加到元组中。我不喜欢这个想法,因为如果 std::tuple_cat 像数组串联一样工作,那么每次调用 tuple_cat(n squared time) 时都需要复制容器中的每个元素。我更愿意为元组保留或预分配例如 100kb 的内存空间,并且将添加到元组的新元素放入此预分配的内存空间而无需复制任何其他元素.有没有办法在线性时间内将用户输入的字符串转换为元组?

最佳答案

用 std::tuple 做你想做的事情并没有真正有效的方法。它们是编译时构造,您希望在运行时确定元组中的类型。做到这一点的唯一方法是预先实例化类型的每个排列,直到元素的最大数量,这将是相当大的数量......

听起来您真正想要的是 std::vector<boost::variant<int, double, std::string...>> 之类的东西.

关于c++ - 我可以为 C++11 std::tuple 预分配一 block 内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19735411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com