我将数据存储在 2 个多图中。数据是一个结构,由 6 个变量组成:
struct data {
int var
string var
string var
string symbol
int price
int var
};
现在我需要对多图中的数据进行排序symbol
。如果符号相同,则按price
。在一个多重地图中,我price
从高到低,反之亦然。例如,在multimap1
中,我有symbol_1 50
symbol_1 45
。在multimap2
,我有symbol_2 30
symbol_2 35
。因为我按两个值排序,所以我使用结构作为多图的键。该结构由符号名称和价格组成,用于对数据进行排序。
如果以下问题是可能的(我认为不可能),那么我认为,我的问题的第二部分不需要回答。是否可以仅使用部分键搜索两个多图。例如,我希望能够找到具有相同符号的所有数据,无论价格如何,使用multimap.equal_range()
或任何其他方法(或算法)来做到这一点。问题是键有两个值,我只想搜索 2 个值中的 1 个。
我认为这是不可能的,所以我使用字符串作为符号(以搜索符号名称)和data
值创建了另外 2 个多图。现在我可以找到所有具有相同名称的符号。我现在面临的问题是两个多图中的数据没有链接。我想要的是,如果我修改multimap1_search
(用于搜索的多图)中的数据,那么它也会修改 中的相同数据multimap1
,或者至少能够修改data
两个多图中的相同值。请记住,2 个多图中的数据顺序不同。这可能吗?你们建议使用其他数据结构吗?我只能使用 C++ STL。我无权访问 boost 或任何其他库。此外,该计划的主要重点是效率。
此外,一般来说,您如何修改多图中的值。您是否删除它并插入另一个值?如果要修改很多值,是否有更好的数据结构可以使用?我将做很多事情,插入、搜索和修改(可能还有删除)。