【问题标题】:Finding indexed data-structure like `std::vector` (not array) [closed]查找像`std::vector`这样的索引数据结构(不是数组)[关闭]
【发布时间】:2019-07-07 07:47:06
【问题描述】:

我正在寻找一种数据结构,它可以使用索引存储值,也可以像std::vector 一样调整大小(但应该被索引以便我可以轻松访问它)是否有任何 C++ 标准库实现我的问题?

我正在寻找的是一个数组类型的 DS,我可以从中删除元素。

【问题讨论】:

  • 我不确定我是否正确理解了您的问题。您仍然可以使用向量。将您的数据打包到结构或 std::pair 中,并将其存储在 std::vector 中。
  • 您提到“向量”,我认为您的意思是std::vectorstd::vector 不满足您的要求怎么办? std::deque 或关联容器之一(如 std::mapstd::unordered_map)怎么样?
  • @ArminMontigny Vector 不符合我的要求,这就是我提出问题的原因。
  • @SahilSilare std::vector 可以存储值、索引、调整大小和删除元素。这是您告诉我们的仅有的四个“要求”。如果这还不够,你必须更具体。您试图解决的实际问题是什么? 为什么你需要这个容器?它应该用来做什么?
  • 消除 STL 和不同版本的 C++ 标准之间的歧义会有所帮助。您使用的是哪个 C++ 版本?

标签: c++ c++11 data-structures c++17 c++-standard-library


【解决方案1】:

您可以使用std::deque,它也是索引序列容器,如std::vector。它还提供std::deque::resize 成员函数。

但是,您的要求应该比std::vector 首先建议std::deque 更具体

【讨论】:

  • 我可以像删除 7 个元素列表中的第三个元素一样删除 deque 中指定位置的元素吗?
  • @SahilSilare 是的,您可以为此使用成员函数std::deque::erase。请参阅链接以获取说明。话虽如此,如果您打算从容器中删除元素,请记住 std::vector 也有成员 erase
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 2011-04-09
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多