zoukankan      html  css  js  c++  java
  • boost::interprocess::managed_shared_memory(2)(std::string)

    #include <iostream>
    #include <boost/interprocess/managed_shared_memory.hpp>
    #include <boost/interprocess/allocators/allocator.hpp>
    #include <boost/interprocess/containers/string.hpp>
    using namespace std;
    int main()
    {
        //boost::interprocess::shared_memory_object类是按照单个字节的方式读写共享内存,用起来不方便
        boost::interprocess::shared_memory_object::remove("Highscore"); 
        boost::interprocess::managed_shared_memory managed_shm(boost::interprocess::open_or_create, "Highscore", 1024);//分配1024字节
        //boost不能直接写入stl中的vector, map,string等,必须在boost::interprocess提供的另外一个分配器定义对应的数据类型,不是c++缺省的分配器
        //创建一个分配器,内部使用的是"托管共享内存段管理器",段管理器负责管理位于共享内存内部的内存
        typedef boost::interprocess::allocator<char, boost::interprocess::managed_shared_memory::segment_manager> CharAllocator;
        //使用新建的分配器定义string对应的数据类型基于boost::interprocess::basic_stirng,经过分配器访问段管理器
        typedef boost::interprocess::basic_string<char, std::char_traits<char>, CharAllocator> string;
        //find_or_construct创建string实例需要知道那个段管理器被访问,所以段管理器指针作为构造函数的第二个指针
        string* str = managed_shm.find_or_construct<string>("String")("Hello!", managed_shm.get_segment_manager());
        str->insert(5, " world");
        cout << *str << endl;
        getchar();
        return 0;
    }
  • 相关阅读:
    JSP中9大内置对象类型
    使用JSP/Servalet技术开发新闻发布系统------JSP数据交互一
    BZOJ5306: [Haoi2018]染色
    BZOJ4695: 最假女选手
    BZOJ4355: Play with sequence
    BZOJ3771: Triple
    BZOJ4057: [Cerc2012]Kingdoms
    BZOJ3302: [Shoi2005]树的双中心
    BZOJ4036: [HAOI2015]按位或
    12.24 ~ 12.30周训练计划+总结
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/3756219.html
Copyright © 2011-2022 走看看