草庐IT

c++ - 用 std/tr1/boost::array 替换内置数组总是安全的吗?

boost::array(或tr1或std版本)在内置数组的基础上提供了一些不错的附加功能。到目前为止,我们的代码库只包含内置数组,例如(编造的,但样式匹配):WORDm_lastReadFlags[FLAGS_MAX];...WORDflagBuffer[FLAGS_MAX];if(getFlags(flagBuffer)){memcpy(m_lastReadFlags,flagBuffer,sizeof(m_lastReadFlags));...我想大家会明白的。现在,我的问题是,对于代码中那些放置boost::array有意义的地方(因为进行了其他更改),是array为内置数组保

c++ - 编译时如何检查TR1?

我们正在编写一个将自身保存在.hpp文件中的日志记录库。我们想包括(如果编译器支持TR1,)或标准除此以外。是否有一种在编译时检查tr1是否可用的标准方法?我在想,与“__cplusplus”定义符号存在的方式相同,可能已经定义了“__cxx__tr1”或类似的东西。我没有在TR1的草稿中看到它,所以我假设它不存在,但我想先问一下以防万一。请注意,如果这些定义不存在,将它们本身包含在提案中并不是一个坏主意。 最佳答案 如果您正在使用任何配置工具,例如autotools,您可以尝试编写如下测试:AC_CHECK_HEADER(tr1/

用于模板类的 C++ std::tr1::hash

我有这个模板类:templateThing{...};我想在unordered_set中使用它:templateclassBozo{typedefunordered_set>things_type;things_typethings;...};现在类Thing拥有它需要的一切,除了哈希函数。我想使它通用,所以我尝试类似的方法:namespacestd{namespacetr1{templatesize_thash>::operator()(constThing&t)const{...}}}尝试用g++4.7编译它时会发出尖叫expectedinitializerbefore‘关于has

ios - 补偿 AVLayerVideoGravityResizeAspectFill 高度差

我有一个这样的嵌套视频:Livecamerafeed当用户拍照时,图像沿y轴偏移CapturedStillimage我确实想要捕获整个图像并让用户上下滚动。他们目前可以这样做,但我希望图像的起始滚动居中以匹配相机提要预览。因此,如果他们拍照,图像就会与视频源显示的帧相匹配。问题是,因为相机的纵横比设置为AVLayerVideoGravityResizeAspectFill,它会进行一些“裁剪”以使图像适合实时预览。由于高度远大于宽度,因此图像中捕获的顶部和底部部分没有显示在实时源中(自然)。但是,我不知道顶部被裁剪了多少,以便我可以偏移预览图像以匹配它。所以我的问题是:您知道如何计算宽

c++ - OS-X 支持 std::tr1

Mac上当前对tr1或新的C++0x的支持是什么我知道XCode提供的gcc总是比gcc.gnu.org提供的版本低几个版本,所以我只是想知道现代支持的状态如何。例如,我需要下载boost才能使用shared_ptr还是可以从std::tr1获取它? 最佳答案 OSX10.6附带g++4.2.1和g++4.0,但如果您愿意,安装自己的版本应该很简单。GNU工具对此非常棒。这是在我的机器上构建的,一台带有g++4.2.1的SnowLeopardMac:#includeintmain(intargc,char*argv[]){std::

c++ - std::tr1 尚未声明

我第n次尝试从源代码编译qt,这次使用选项configure-release-platform-win32但我收到错误:有人知道怎么解决吗?谢谢。 最佳答案 在使用MinGW编译器(可能是任何gcc编译器)编译Qt时,您可能会遇到此问题,该编译器默认编译启用了C++11标准的C++程序。第3方库JavaScriptCore试图定义一些“规范化”has_trivial_constructor和相关模板的包装器,但显然它尚未更新以处理GCC的更新以合并完整的C++11标准。修复方法是使用默认情况下不启用C++11功能的MinGW编译器,

c++ - 如何遍历 TR1 元组

由于卡在TR1土地,对于测试程序,我需要对一些特定类型的对象执行某些操作。我有几个元组类型定义,如下所示:typedefstd::tr1::tupleintegral_types;从每个元组类型中创建一个对象。然后我有类似于这样的功能模板:templatevoidinvoke_operation_1(T&obj);需要为元组对象中的所有对象调用这些。我如何在C++03中做到这一点? 最佳答案 Bristol刚刚为C++14确定了一项功能来解决这个问题。处理起来并不难。对于更简单的情况,您可以使用递归模板。虽然没有部分功能特化等,但它

c++ - XCode 4.5 'tr1/type_traits' 找不到文件

我使用wxwidget库,但遇到以下问题:#ifdefined(HAVE_TYPE_TRAITS)#include#elifdefined(HAVE_TR1_TYPE_TRAITS)#ifdef__VISUALC__#include#else#include#endif#endif这里找不到#include。我使用AppleLLVM编译器4.1。(使用c++11方言)。如果我切换到LLVMGCC4.2编译器,我在那里没有错误,但主要问题是所有c++11包含都不起作用。我怎样才能使用GCC编译器,但使用c++11标准或使LLVM可以找到?如有任何帮助,我们将不胜感激。

c++ - 为什么有些包含文件只驻留在 tr1 中?

当我尝试包含类似的内容时它失败并说该文件不存在,而当我尝试包含时有用。然而,在c++03中也存在的包含文件被发现,并且是c++11(如具有移动构造函数)。此外,通常也可以找到仅在c++11中而不在tr1中的header,例如。.就像tr1中的所有新内容都被扔进了tr1文件夹,其他所有内容都进入了正常的include。为什么会这样?有没有不修改源文件的修复方法?路过-I/path/to/include/tr1不会工作,因为一切都在tr1命名空间中。我使用的编译器是Appleclangversion3.0(tags/Apple/clang-211.10.1)(basedonLLVM3.0s

c++ - std::map + std::tr1::bind + 标准算法是否值得?

这是我的questionfromyesterday的后续.我想到了ScottMeyers关于只写代码的警告。我原则上喜欢使用标准算法访问std::map的键或值的想法,但恕我直言,所需的语法有点巴洛克式。假设我想将map的所有键转储到vector中。鉴于以下声明,typedefstd::mapMyMap;MyMapm;std::vectorv;哪个代码更易于维护(即,可能不那么困惑)?选项#1:std::transform(m.begin(),m.end(),std::back_inserter(v),std::tr1::bind(&MyMap::value_type::first,_