相关疑难解决方法(0)

哪个STL容器?

我需要一个容器(不一定是STL容器),它让我轻松地执行以下操作:

  • 在任何位置插入和移除元素
  • 按索引访问元素
  • 以任何顺序迭代元素

我使用了std :: list,但它不会让我插入任何位置(确实如此,但为此我必须迭代所有元素然后插入我想要的位置,这很慢,作为列表可能很大).你能推荐任何有效的解决方案吗?

c++ containers stl list

3
推荐指数
1
解决办法
1677
查看次数

容器有恒定时间访问任何元素,从前面弹出并向后推?

我正在寻找具有恒定时间的标准容器(如果存在):

  • 按位置访问任何元素
  • 从前面弹出元素
  • 在后面推动元素

我可以自己编程,但为什么它可能已经存在std呢?为什么呢?

c++ containers std

3
推荐指数
1
解决办法
749
查看次数

我们在multiset中有哪些更好的功能不在向量中?

为什么我们应该使用"多组"(因为我们知道"多组"可以保持重复键)

为什么我们不应该使用向量?

我们在向量中没有"多组"中有什么好的功能吗?(或其他容器,如矢量)

你知道"多套装"的特殊用法吗?

c++ containers vector set multiset

3
推荐指数
1
解决办法
909
查看次数

选择数据结构

根据需要使用不同的数据结构,但我如何知道应该使用哪种数据结构?我只是想知道如何选择合适的数据结构?谢谢

c

2
推荐指数
1
解决办法
2842
查看次数

哪个STL容器用于相互关联的数据?

首先,这是一个游戏项目.

我需要有一个名为Skill的对象,它包含它们的字符串名称,一些其他成员,以及一组名为"requirements"的其他Skill对象.(这将是给定技能要求的先决条件技能列表)

在什么样的STL容器中我应该放置一组所有Skill对象?向量?组?地图?
这个容器是否也被用作成员"要求"的类型?

技能必须是独一无二的.
至于我将对技能组合做什么 - 通过名称搜索,主要是结合技能组合,并将技能附加到组合中.

c++ containers stl

2
推荐指数
1
解决办法
116
查看次数

寻找提供随机和"顺序"访问的数据结构

这是我经常遇到的编程问题,并且想知道是否存在数据结构,无论是在C++ STL中还是我自己实现的,都提供随机和顺序访问.

我可能需要这个的一个例子:

  • 假设有n种类型的项目(例如,n = 1000000),并且每种类型的项目都有固定数量(例如,0或10)

  • 我将这些项存储到一个数组中,其中数组索引表示项的类型,值表示该给定类型的项数是多少

  • 现在,我有一个迭代所有现有项目的算法.为了获得这些项目,当所有条目都为0时迭代整个数组是非常浪费的,除了数组[99999]和数组[999999].

通常,我通过使用链表来解决这个问题,该链表保存了所有非零数组条目的索引.我以这种方式实现标准操作:

Insert(int t):

1)如果Array [t] == 0,LinkedList.push_back(t);

2)数组[t] ++;

删除(int t):

1)如果Array [t] == 1,从LinkedList中查找并删除t;

2)数组[t] - ;

如果我想要删除操作的O(1)复杂性,我使数组存储容器而不是整数.每个容器都包含一个整数和指向LinkedList各自元素的指针,因此我不必搜索列表.

我想知道是否有一个数据结构正式化/改进了这种方法,或者是否有一种更好的方法来完成这项工作.

c++ stl data-structures

2
推荐指数
1
解决办法
165
查看次数

有没有办法从地图上获取特定的键值对?

我目前正在学习有关STL中的地图的信息。我想知道如何从地图上获取特定的键值对。例如,下面地图中的第三个键值对。'C'-> 1

    'A'-> 1
    'B'-> 1
    'C'-> 1
    'D'-> 1
    'E'-> 2

Run Code Online (Sandbox Code Playgroud)

c++ dictionary iterator stl

1
推荐指数
1
解决办法
44
查看次数

如果像这样的动态数据结构是可能的,为什么我们需要一个链表?

如果我们拥有std::set并且std::vector可以动态增长和缩小,为什么我们需要链表?

NB我真的不明白,为什么会有这么多的选票.唐氏选民,请留下评论.

c++ arrays linked-list dynamic data-structures

-3
推荐指数
4
解决办法
565
查看次数