首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请为我提供带有std::cout的boost-multi-index的存根

请为我提供带有std::cout的boost-multi-index的存根
EN

Stack Overflow用户
提问于 2011-03-08 19:46:16
回答 2查看 254关注 0票数 0

我正在挖掘多指标的网络和头部,但我没有找到任何简单的例子。有没有人能给我提供一个像multi_index_container这样的小代码--single_index--找到一些东西并计算值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-10 00:26:54

我将只复制并粘贴your other, near-duplicate question中的代码

代码语言:javascript
复制
#include <string>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/member.hpp>

struct EnumStruct
{
    EnumStruct(int const me, std::string const& mes, int const le, std::string const& les)
      : microsoftEnum(me),
        microsoftEnumString(mes),
        localEnum(le),
        localEnumString(les)
    { }

    int microsoftEnum;
    std::string microsoftEnumString;
    int localEnum;
    std::string localEnumString;
};

namespace bmi = boost::multi_index;

struct localEnum_t;

typedef bmi::multi_index_container<
    EnumStruct,
    bmi::indexed_by<
        bmi::ordered_unique<
            bmi::tag<localEnum_t>,
            bmi::member<EnumStruct, int, &EnumStruct::localEnum>
        >
    >
> boost_Enum_Container;

int main()
{
    boost_Enum_Container enumStructContainer;
    enumStructContainer.insert(EnumStruct(1, "MS_1", 11, "LOC11"));
    enumStructContainer.insert(EnumStruct(2, "MS_2", 22, "LOC22"));
    enumStructContainer.insert(EnumStruct(3, "MS_3", 33, "LOC33"));
    boost_Enum_Container::index_iterator<localEnum_t>::type iter = enumStructContainer.get<localEnum_t>().find(22);
    if (iter != enumStructContainer.get<localEnum_t>().end())
        std::cout << "found, localEnumString == " << iter->localEnumString << std::endl;
    else
        std::cout << "didn't find anything" << std::endl;
}
票数 1
EN

Stack Overflow用户

发布于 2011-03-08 20:07:56

代码语言:javascript
复制
BOOST_FOREACH(type &i, container.equal_range(key))
    std::cout << i << std::endl;

显然,有任意数量的元素与给定的键,所以这可能会打印任何数量的行,包括零。

代码语言:javascript
复制
std::pair<iterator, iterator> range = container.equal_range(key);
if(range.first == range.second)
    std::cout << "Nothing for " << key << std::endl;
else
    std::cout << "First for " << key << " is " << *range.first << std::endl;

这就是equal_range的工作方式。它提供了一对迭代器,用于标记包含给定键的值的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5232011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档