【问题标题】:how to replace bvector header for version g++5如何替换 g++5 版本的 bvector 标头
【发布时间】:2015-12-26 00:17:16
【问题描述】:
使用预定义标头的算法,该算法是 2005 年的旧算法,我认为它是为旧 g++4.2.1 实现的,因为在 g++5 中你找不到 bvector.h 标头
老版本可以在/usr/include/c++/4.2.1/backward/bvector.h找到,如何获取这个header,或者在新g++版本中替换成哪个header,会报错:
#include<bvector.h>
#include<iostream>
.....
如何更换?
【问题讨论】:
标签:
c++
ubuntu
installation
g++
【解决方案1】:
查看你的旧版本 - 如果你的代码曾经编译过,你必须有带有这个头文件的 gcc4.2.1 - 看看它做了什么。
它是否为vector<bool> 提供类型定义?只需移植您的代码以直接使用vector<bool>。如果您必须复制 typedef,请不要尝试将其添加到 namespace std。
【解决方案2】:
从libstdc++ patch 看来,旧的 typedef 与此类似:
typedef std::vector<bool, std::allocator<bool> > bit_vector;
应该可以直接复制,看起来这个补丁的一部分最终被删除,正如我们从follow-up 中看到的那样,这与它现在不可用的事实相符。
这个旧的gcc bug report 也建议用vector<bool> 替换它。