重载Boost Multi_Index查找操作
Overloading Boost Multi_Index find operation
我在共享内存中有一个boost Multi_index
容器,它保留了一些数据,以便在同一台机器上由多个进程执行快速搜索。
typedef multi_index_container<
MyData,
indexed_by<
random_access<>, // keep insertion order
ordered_non_unique< member<MyData, time_t, &MyData::timestamp> >
>
> myContType;
我想通过时间戳属性在这个容器中执行搜索像这样:
myContType_by_time& idIndex = myCont.get<1>();
myContType_by_time::iterator itTime = idIndex.find(timestamp);
但问题是我并不是在寻找完全匹配的。我要搜索的是其前导值小于搜索时间的第一个项。
让我举个例子,假设在我的容器中有这样的项(按插入顺序):
1 2 3 4 5 6
{109345, 109348, 109352, 109355, 109358, 109362, }
,当我使用109354
执行搜索时,我期望找到项目4
,因为它是其前身小于搜索条件的第一个项目。
是否有可能实现这种特殊的搜索机制,用索引来快速搜索,而不是搜索整个数组,逐个查找条件?(数组可以有超过100000个条目)
谢谢。
不是:我正在使用Visual Studio 2008 vc++ .
myContType_by_time::iterator itTime = idIndex.lower_bound(timestamp);
if(itTime!=idIndex.begin())--itTime;
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 在C++中查找文件
- 重载操作程序时出错>>用于类中的字符串 memebr
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 对字符串进行位操作
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 如何使用 string::find 在一个操作中查找"+"或"-"
- 是否存在STL或BOOST映射,如查找和弹出操作的容器
- 是对std::map线程安全的查找和读取操作
- 查找操作码汇编指令
- 是一个std::vector查找,比执行简单操作要快
- 双访问查找操作所需的c++结构体容器
- 重载Boost Multi_Index查找操作