草庐IT

boost-container

全部标签

c++ - boost 序列化和 std::shared_ptr

我有一个包含以下字段的对象:boost::unordered_map>m_liste_;我想序列化它,但似乎std::shared_ptr不能以简单的方式序列化谁有解决办法? 最佳答案 我怀疑你缺少一个包含,#includelink,atthebottom此外,该示例看起来像是默认处理了别名和循环。_当然,循环会导致shared_ptr的潜在内存泄漏,这与序列化无关,您仍然必须注意这些(通过避免循环或明智地使用weak_ptr)_另见:Templateserialization-shared_ptrshared_ptrRevisit

c++ - 只要集合不变,迭代器是否以相同的顺序迭代 boost::unordered_set 或 boost::unordered_map?

只要set或map不变,迭代器是否以相同的顺序遍历boost::unordered_set或boost::unordered_map? 最佳答案 HashMap的某些实现会将散列到同一容器的项目重新排序,将最近访问的项目放在列表的前面,作为优化。这将改变顺序。我不知道boost::unordered_map会这样做,但将来您可能最终会用std::unordered_map代替,这将完全取决于您的编译器的实现。 关于c++-只要集合不变,迭代器是否以相同的顺序迭代boost::unorde

c++ - 如何使用 boost::units 添加你自己的基本单位和转换

我目前使用boost::units来表示以si单位表示的扭矩,但是我得到的是以磅英尺为单位的扭矩。因此,我试图创建一个磅英尺的扭矩单位和一个转换来支持它。我懒惰的尝试是简单地定义:BOOST_STATIC_CONST(boost::si::torque,pound_feet=1.3558179483314*si::newton_meters);然后做:boost::si::torquetorque=some_value*pound_feet;但这感觉并不令人满意。我的第二次尝试是尝试定义一个名为pound_foot的新基本单位(见下文)。但是当我尝试以类似于上述的方式使用它时(转换为s

c++ - boost::python 和 weak_ptr:东西消失了

我想将对对象的引用存储为weak_ptr。在纯C++中,以下工作:#include#include#includeusingnamespacestd;usingnamespaceboost;structEmpty{Empty(){}};structStore{weak_ptrvalue;Store(){};voidsetValue(shared_ptrv){coutvalue=weak_ptr(v);shared_ptrv_ok=this->value.lock();if(v_ok){coutgetValue(){shared_ptrp=this->value.lock();if(p)

c++ - 如何组合两个 Boost Geometry 变压器?

我有两个变压器,平移和旋转如下:namespacebg=boost::geometry;namespacetrans=bg::strategy::transform;trans::translate_transformertranslate(px,py);trans::rotate_transformerrotate(rz);如何将它们合并为一个,这样我就不必每次都调用两次bg::transform并使用中间变量? 最佳答案 平移和旋转都是仿射变换,即可以用矩阵表示。因此,您所要做的就是创建一个新的更改器(mutator),其矩阵等

c++ - boost::变体实现

我只是对boost::variant的实现感到好奇。是这样的吗?两个成员:代表当前存储类型的数字(即第一个模板参数为0,第二个模板参数为1等)所有可能类型的union(当然是最大的)。apply_visitor():在表示当前存储类型的数字上有一个switch语句来调用正确的重载(这在最坏的情况下会被编译为跳转表,因此需要常数时间)。我知道还有一些优化可以确保boost::variant不需要动态分配内存,详情here,但我想我明白了。 最佳答案 它的工作原理与您描述的差不多。长话短说:它有一个整数which,表示使用了哪种数据类型

c++ - boost::asio 通过 SocketCAN

我正在考虑使用BoostAsio从SocketCAN中读取数据.linux/can.h没什么特别的,并且设备应该表现得像环回接口(interface),并与原始套接字一起使用。查看basic_raw_socket接口(interface)似乎我可以利用basic_raw_socket::assign分配使用创建的native套接字socket(PF_CAN,SOCK_RAW,CAN_RAW);这是我目前的情况namespacecan{classCanSocket{public:typedefboost::asio::ip::basic_endpointendpoint;typedefb

c++ - boost::lockfree::spsc_queue 忙等待策略。有阻塞流行音乐吗?

所以我正在使用boost::lockfree::spec_queue通过两个运行我应用程序中两个对象的仿函数的boost_threads进行通信。除了spec_queue::pop()方法是非阻塞的之外,一切都很好。即使队列中没有任何内容,它也会返回True或False。但是我的队列似乎总是返回True(问题#1)。我认为这是因为我预先分配了队列。typedefboost::lockfree::spsc_queue>spsc_queue;这意味着要有效地使用队列,我必须忙于等待使用100%cpu不断弹出队列。我宁愿不睡任意长的时间。我在java中使用了其他队列,这些队列会阻塞直到对象可

c++ - 我试图在 C++03 中嵌套 boost 的 "map_list_of",但显然构造不明确?

考虑一下:#include#include#include#includeusingboost::assign::map_list_of;conststd::map>test=map_list_of(100,map_list_of(1,'a')(2,'b'))(101,map_list_of(1,'c')(2,'d'));intmain(){std::coutsecond.find(2)->second我希望结果是一个程序,在执行时输出d.相反,Igetthis:$clang++-std=c++03-O2-Wall-pedantic-pthreadmain.cppInfileinclu

c++ - boost::asio::ip::multicast::join_group 不起作用

我尝试了example,但它不起作用。显然它没有设置IPPROTO_IP/IP_MULTICAST_IF选项。我只能找到IPPROTO_IP/IP_MULTICAST_IF的boost::asio::ip::multicast::outbound_interface,我试过了但失败了。有什么方法可以在不调用c级setsockopt的情况下使boost::asio::ip::multicast工作?boost::asio::ip::udp::endpointlisten_endpoint(listen_address,multicast_port);socket_.open(listen