草庐IT

boost-bimap

全部标签

C++:替代 STL 和 Boost?

C++是一种多范式语言,STL和Boost是针对功能构建的语言范式。STL由容器(保存数据)、迭代器(访问数据)和算法(操作数据的函数)组成。算法函数通过使用迭代器应用于容器。作为副作用,这些方法不是容器类的一部分,而是完全独立的。(这避免了库编写者的冗余,但对库用户来说很痛苦。)是否有C++替代STL/Boost以更传统的面向对象风格提供此类容器?我正在寻找字符串、vector、链表、map、树、哈希表等。容器应该易于继承和扩展。相比之下,从STL/Boost扩展类是verybadidea这是他们设计师的设计。PS:请不要使用下面的回复空间来夸大STL/Boost的优势。我很了解他们

C++:替代 STL 和 Boost?

C++是一种多范式语言,STL和Boost是针对功能构建的语言范式。STL由容器(保存数据)、迭代器(访问数据)和算法(操作数据的函数)组成。算法函数通过使用迭代器应用于容器。作为副作用,这些方法不是容器类的一部分,而是完全独立的。(这避免了库编写者的冗余,但对库用户来说很痛苦。)是否有C++替代STL/Boost以更传统的面向对象风格提供此类容器?我正在寻找字符串、vector、链表、map、树、哈希表等。容器应该易于继承和扩展。相比之下,从STL/Boost扩展类是verybadidea这是他们设计师的设计。PS:请不要使用下面的回复空间来夸大STL/Boost的优势。我很了解他们

c++ - 为什么 boost::checked_delete "intentionally complex"?

所以我在查看一些boost源代码时发现了这个:(来自)templateinlinevoidchecked_delete(T*x){//intentionallycomplex-simplificationcausesregressionstypedefchartype_must_be_complete[sizeof(T)?1:-1];(void)sizeof(type_must_be_complete);deletex;}有人碰巧知道为什么要这样实现吗?sizeof(T)(例如)还不够吗? 最佳答案 Someoneaskedthes

c++ - 为什么 boost::checked_delete "intentionally complex"?

所以我在查看一些boost源代码时发现了这个:(来自)templateinlinevoidchecked_delete(T*x){//intentionallycomplex-simplificationcausesregressionstypedefchartype_must_be_complete[sizeof(T)?1:-1];(void)sizeof(type_must_be_complete);deletex;}有人碰巧知道为什么要这样实现吗?sizeof(T)(例如)还不够吗? 最佳答案 Someoneaskedthes

c++ - 如何在依赖的静态库中链接 Boost

在MSVisualC++2010中我的解决方案中有一个C++项目,它使用了boost并且运行良好。然后我决定将这个项目转换成一个静态库并创建一个依赖于这个静态库的新项目。现在,我转换后的静态库构建没有错误和警告(编译器和链接器)但新项目编译但不链接。我得到:1>LINK:fatalerrorLNK1104:cannotopenfile'libboost_thread-vc100-mt-1_45.lib'作为测试,我将完整目录路径添加到该库的链接器选项中...然后它提示1>LINK:fatalerrorLNK1104:cannotopenfile'libboost_date_time-v

c++ - 如何在依赖的静态库中链接 Boost

在MSVisualC++2010中我的解决方案中有一个C++项目,它使用了boost并且运行良好。然后我决定将这个项目转换成一个静态库并创建一个依赖于这个静态库的新项目。现在,我转换后的静态库构建没有错误和警告(编译器和链接器)但新项目编译但不链接。我得到:1>LINK:fatalerrorLNK1104:cannotopenfile'libboost_thread-vc100-mt-1_45.lib'作为测试,我将完整目录路径添加到该库的链接器选项中...然后它提示1>LINK:fatalerrorLNK1104:cannotopenfile'libboost_date_time-v

c++ - boost async_* 函数和 shared_ptr 的

我经常在代码中看到这种模式,将shared_from_this作为第一个参数绑定(bind)到成员函数并使用async_*函数调度结果。这是另一个问题的示例:voidConnection::Receive(){boost::asio::async_read(socket_,boost::asio::buffer(this->read_buffer_),boost::bind(&Connection::handle_Receive,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::

c++ - boost async_* 函数和 shared_ptr 的

我经常在代码中看到这种模式,将shared_from_this作为第一个参数绑定(bind)到成员函数并使用async_*函数调度结果。这是另一个问题的示例:voidConnection::Receive(){boost::asio::async_read(socket_,boost::asio::buffer(this->read_buffer_),boost::bind(&Connection::handle_Receive,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::

c++ - boost multi_index 是如何实现的

我很难理解Boost.MultiIndex是如何实现的。假设我有以下内容:typedefmulti_index_container>,ordered_unique>>>employee_set;我想我有一个数组,Employee[],它实际上存储employee对象,以及两个mapmapmap以姓名和年龄为键。每个映射都有employee*值,该值指向数组中存储的对象。这样可以吗? 最佳答案 给出了底层结构的简短解释here,引述如下:该实现基于与指针互连的节点,就像您最喜欢的std::set实现一样。我将对此进行详细说明:std:

c++ - boost multi_index 是如何实现的

我很难理解Boost.MultiIndex是如何实现的。假设我有以下内容:typedefmulti_index_container>,ordered_unique>>>employee_set;我想我有一个数组,Employee[],它实际上存储employee对象,以及两个mapmapmap以姓名和年龄为键。每个映射都有employee*值,该值指向数组中存储的对象。这样可以吗? 最佳答案 给出了底层结构的简短解释here,引述如下:该实现基于与指针互连的节点,就像您最喜欢的std::set实现一样。我将对此进行详细说明:std: