我可以为C ++ 11 std :: tuple预先分配一块内存吗?

用户名

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

马特纽波特

使用std :: tuple并不是真正有效的方法。它们是一个编译时结构,您想在运行时确定元组中的类型。这样做的唯一方法是预先实例化类型的每个排列,直到最大元素数量,这将是一个很大的数目...

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

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在c ++ 11的std :: deque上使用std :: max_element()吗?

来自分类Dev

我可以安全地混合使用-std = c ++ 11和-std = c ++ 14编译的库吗?

来自分类Dev

C ++ 11:从模板函数构建std :: tuple

来自分类Dev

可以在C ++ 11中模拟std :: is_invocable吗?

来自分类Dev

C ++ 11 std :: forward_as_tuple和std :: forward

来自分类Dev

在C ++ 11中,我可以为非聚合类型实现像构造函数一样的聚合类型初始化吗?

来自分类Dev

C ++ 11可以构造一个std :: initializer_list吗?

来自分类Dev

我可以从C调用std :: function吗?

来自分类Dev

如何在C ++ 11中迭代std :: tuple

来自分类Dev

在 C++11 中返回包含常量引用的 std::tuple

来自分类Dev

在大型项目中的用法c ++ 11 std :: tuple

来自分类Dev

可以为第三方库替换默认的C ++ std :: allocator吗?

来自分类Dev

可以将C ++ 11 lambda分配给具有错误签名的std :: function

来自分类Dev

C ++ 11:std :: locale :: empty()甚至是东西吗?

来自分类Dev

C ++ 11 std :: function比虚拟调用慢吗?

来自分类Dev

C ++ 11 std :: regex替代

来自分类Dev

std :: thread(c ++ 11)中使用的函数可以有[[noreturn]]吗?

来自分类Dev

我可以为联合的C ++函数设置默认参数吗

来自分类Dev

如何同时填充c ++ 11 std :: map <std :: string,std :: bitset <N> *>(线程安全)而不会发生内存泄漏?

来自分类Dev

非静态数据成员初始化器仅与-std = c ++ 11或-std = gnu ++ 11一起提供

来自分类Dev

为什么我可以在gcc -std = c11中使用gets()?

来自分类Dev

可以为std :: aligned_storage进行memcpy吗?

来自分类Dev

如何分配动态内存并在重新分配后重新分配我们如何将中间释放的内存带入一块内存

来自分类Dev

我需要有关std140统一块偏移的解释

来自分类Dev

fabsf是C ++ 11中std名称空间的一部分吗?

来自分类Dev

我可以在QNX中使用C ++ 11吗?

来自分类Dev

我可以在C ++ 11中生成UUID吗?

来自分类Dev

C ++-返回C ++ 11 std :: array

来自分类Dev

c ++枚举范围无法使用-std = c ++ 98进行编译,但是使用-std = c ++ 11可以

Related 相关文章

  1. 1

    我可以在c ++ 11的std :: deque上使用std :: max_element()吗?

  2. 2

    我可以安全地混合使用-std = c ++ 11和-std = c ++ 14编译的库吗?

  3. 3

    C ++ 11:从模板函数构建std :: tuple

  4. 4

    可以在C ++ 11中模拟std :: is_invocable吗?

  5. 5

    C ++ 11 std :: forward_as_tuple和std :: forward

  6. 6

    在C ++ 11中,我可以为非聚合类型实现像构造函数一样的聚合类型初始化吗?

  7. 7

    C ++ 11可以构造一个std :: initializer_list吗?

  8. 8

    我可以从C调用std :: function吗?

  9. 9

    如何在C ++ 11中迭代std :: tuple

  10. 10

    在 C++11 中返回包含常量引用的 std::tuple

  11. 11

    在大型项目中的用法c ++ 11 std :: tuple

  12. 12

    可以为第三方库替换默认的C ++ std :: allocator吗?

  13. 13

    可以将C ++ 11 lambda分配给具有错误签名的std :: function

  14. 14

    C ++ 11:std :: locale :: empty()甚至是东西吗?

  15. 15

    C ++ 11 std :: function比虚拟调用慢吗?

  16. 16

    C ++ 11 std :: regex替代

  17. 17

    std :: thread(c ++ 11)中使用的函数可以有[[noreturn]]吗?

  18. 18

    我可以为联合的C ++函数设置默认参数吗

  19. 19

    如何同时填充c ++ 11 std :: map <std :: string,std :: bitset <N> *>(线程安全)而不会发生内存泄漏?

  20. 20

    非静态数据成员初始化器仅与-std = c ++ 11或-std = gnu ++ 11一起提供

  21. 21

    为什么我可以在gcc -std = c11中使用gets()?

  22. 22

    可以为std :: aligned_storage进行memcpy吗?

  23. 23

    如何分配动态内存并在重新分配后重新分配我们如何将中间释放的内存带入一块内存

  24. 24

    我需要有关std140统一块偏移的解释

  25. 25

    fabsf是C ++ 11中std名称空间的一部分吗?

  26. 26

    我可以在QNX中使用C ++ 11吗?

  27. 27

    我可以在C ++ 11中生成UUID吗?

  28. 28

    C ++-返回C ++ 11 std :: array

  29. 29

    c ++枚举范围无法使用-std = c ++ 98进行编译,但是使用-std = c ++ 11可以

热门标签

归档