0

我想设计/找到一个支持两列数据和对这些数据进行 CRUD 操作的 C++ 数据结构/容器。我查看了 STL Containers,但它们都不支持我的要求(如果我错了,请纠正我)。我的确切要求如下

  1. 具有两列的数据结构。
  2. 支持以下功能

    1. 搜索特定项目。

    2. 搜索符合条件的项目列表

    3. 这两列都应支持上述搜索操作。即,我应该能够在两列上搜索数据。

    4. 更新特定项目

    5. 删除特定项目
    6. 添加新项目

我更喜欢搜索操作比添加/删除操作更快。

此外,我将在线程之间共享这些数据,因此需要支持互斥锁(我也可以分别对这些数据实现互斥锁。)

现有的任何 STL 是否满足我的要求,或者我们是否有任何其他库或数据结构最适合我的要求。

注意:我不能使用数据库或 SQLite 来存储我的数据。

谢谢 问候, 迪内什

4

3 回答 3

1

如果其中一列是唯一的,那么您可能可以使用Map。否则,定义一个具有两个代表列的成员变量的类,并将其存储在一个向量中。有一些算法可以帮助您搜索容器。

于 2012-07-09T10:58:58.690 回答
1

搜索特定项目。

如果您需要单向映射(即快速搜索一列中的值),您应该使用映射或多映射容器类。但是,标准库中没有双向映射,因此您应该将自己的映射构建为一对(多)映射或使用其他库,例如 boost::bimap

于 2012-07-09T14:24:12.993 回答
1

你最好的选择是Boost.Bimap,因为当你想根据任一列进行搜索时,它会让你很容易。如果您决定需要更多列,那么 Boost.Multi_index 可能会更好。这是一个例子

于 2012-07-09T14:33:37.600 回答