【问题标题】:Best Standard Class to store Object List in?存储对象列表的最佳标准类?
【发布时间】:2013-10-23 13:56:00
【问题描述】:

什么是代表未索引列表的类,其功能包括检查对象是否在列表中?

list<char> list;
list.add("obj");
if(list.inlist("obj")) doStuff();
list.remove("obj");

最好该类必须在标准库或 boost 库中,但如果您知道任何其他方式,无论如何都要回答,因为无论如何它可能很有趣。

我知道有一个 std::list 类,但它没有我正在寻找的功能。 (检查对象是否在列表中)

【问题讨论】:

  • 您可以使用find检查列表中的对象
  • 取决于您在课堂上可能有的许多要求。你需要经常找对象吗?您需要保留订单吗?等等……
  • @Erbureth 唯一会用到的特性就是示例中的特性。任何花哨的东西都会被忽略。尤其是inlist这个功能会用得很多。
  • 在这种情况下,std::set 是你的答案

标签: c++ list boost std


【解决方案1】:

这是std::unordered_set 的用例。这可以跟踪重复项,而无需保持它们的有序性。

【讨论】:

    【解决方案2】:

    如果只需要查找对象,可以使用std::setstd::multiset

    如果 C++11 是一个选项,您可以使用他们的 unordered counterparts

    【讨论】:

    • 这是一个很好的观点。也许这些数据结构更合适。
    • 如果对象是可散列的并且顺序无关紧要,请考虑使用std::unordered_set
    • @not-rightfold 这也是一个不错的选择,如果允许 C++11 并且不需要设置交集/联合(似乎是这种情况)
    【解决方案3】:

    您可以使用std::find 在容器中查找对象。

    【讨论】:

    • 在这种情况下,最好使用什么容器?我猜是一个标准清单。 (因为它不会在索引上浪费资源。)
    • 向量不存储索引。
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2018-07-27
    • 2010-10-08
    相关资源
    最近更新 更多