草庐IT

STL_container_type

全部标签

c++ - 关于 std::type_info 中的反射扩展的一般感觉是什么?

我注意到反射是其他语言的开发人员发现c++非常缺乏的一项功能。对于某些应用程序,我真的明白为什么!如果你有反射,那么编写IDE的自动完成之类的东西就容易多了。当然,如果我们拥有序列化API,世界会变得更简单。另一方面,C++的主要原则之一是不要为不用的东西付费。这是完全有道理的。这是我喜欢C++的地方。但我想到可能会有妥协。为什么编译器不对std::type_info结构添加扩展?不会有运行时开销。二进制文件最终可能会更大,但这可能是一个简单的编译器开关来启用/禁用,老实说,如果您真的关心空间节省,您可能会禁用异常和RTTI。有些人提到模板存在问题,但编译器已经很高兴地为模板类型生成了

c++ - STL 和 UTF-8 文件输入/输出。怎么做?

我将wchar_t用于内部字符串,将UTF-8用于存储在文件中。我需要使用STL将文本输入/输出到屏幕,还需要使用完整的立陶宛字符集。这一切都很好,因为我没有被迫对文件做同样的事情,所以下面的例子很好地完成了工作:#include#include#include_setmode(_fileno(stdout),_O_U16TEXT);wcout但我很好奇,并试图对文件做同样的事情,但没有成功。当然,我可以使用格式化的输入/输出,但那是……气馁。FILE*fp;_wfopen_s(&fp,L"utf-8_out_test.txt",L"w");_setmode(_fileno(fp),_

c++ - STL Vectors 和 new 运算符

这个问题应该很简单,也许很愚蠢,但我就是找不到问题。基本上,我必须解析一些自然语言的句子。我需要实现一个简单的算法来操纵“block”。一个Block由2个Pseudosentences组成,Pseudosentences由20个单词(字符串)组成。代码如下:typedefvectorPseudosentence;#defineW20//APseudosentenceismadeofWwords#defineK2//AblockismadeofKPseudosentencesclassBlock{public:vectorp;multimapScoremap;Block(){p.res

c++ - 使用 Boost.Log 构建 Boost "error: target { simple_event_log.mc. } has no type"

我正在尝试构建Boost.Log(http://boost-log.sourceforge.net/libs/log/doc/html/index.html)。我将它添加到我的boost源并执行了我常用的boost构建命令。b2--build-dir="D:\boost\1.51.0\boost"toolset=gccvariant=releaselink=staticthreading=multiruntime-link=static--build-type=complete但什么也没发生,最后我收到了这个:D:/boost/1.51.0/src/tools/build/v2/bui

c++ - Eclipse CDT 调试 : Show dynamic type

我正在使用CDT进行C++开发,它使用gdb进行调试。调试变量View仅显示变量的声明类型-而不是基于vtable信息的实际类型。由于我严重依赖动态子类化,声明的类型通常不包含我需要的信息。我还必须检查实际子类的值。我发现了这个问题:vtableinpolymorphicclassofC++usinggdb据说gdb能够使用以下命令打印基于vtable信息的实际类型:setprintobjecton但是如何在EclipseCDT中执行此操作?顺便说一句:这不是一个很常见的用例,所以默认情况下应该启用它吗?一旦有人使用继承和虚拟的东西,在调试过程中看到真实的对象类型就非常重要。仅显示已声

c++ - 黑莓 10 : GNU STL

我正在尝试使用MomenticsIDE2.0版创建一个BB10级联项目,我需要该项目使用GNU标准库而不是Dinkumware(因为我有使用arm-unknown-nto-qnx8编译的外部库。0.0eabi-g++仅支持gnustd)。在IDE中,我已将ProjectProperties->C/C++Build/Settings/Runtime更改为“C++GNUwithexceptions”。但是,当我运行一个带有我创建的静态库(.a文件)的简单项目时(只有一个头文件包含构造函数、std::string对象、setter和getter(用于对象)和相应的cpp文件),我在执行此操作

c++ - 如果将某个符号的名称用作 STL 容器的元素,为什么我不能隐藏它?

根据answer,我通过使用标志-fvisibility=hidden和构建工具链中的命令strip隐藏了共享库的大部分内部符号。但我发现一些用作标准C++容器元素的符号无法隐藏。例如,/*example1.cpp*/#include#defineMY_EXPORTS__attribute__((visibility("default")))extern"C"{MY_EXPORTSvoid*create();MY_EXPORTSvoiddosth(void*,inti);MY_EXPORTSvoidrelease(void*);}classPoint{public:intx;inty;

c++ - 无法在 CGAL 中创建 AABB 树类型的 STL 容器

我正在尝试创建类型为map>的STL映射(AABBtree's的map)当我尝试为map分配一个值时,例如(此代码仅用于演示目的)://CGALincludesbegin#include#include#include#include#include#include//CGALincludesend/**CGALtypedef'sforinitialization*/typedefCGAL::Simple_cartesianK;typedefK::FTFT;typedefK::Point_3Point_3;typedefK::Segment_3Segment;typedefCGAL::

c++ - Boost ICL : Are some combinations of interval types and functions not implemented?中函数 "contains"的基本使用

我开始使用BoostICL,并且偶然发现了一些非常基础的东西。例如,函数contains应该返回true或false,这取决于给定元素是否在区间内。然而,这适用于[right,left]_open_intervals但不适用于[open,closed]_inteval(请参见下面的示例)。这似乎太明显了,不是疏忽。我正在以预期的方式使用库吗?例如(使用gcc4.8或clang3.3和Boost1.54):#include//neededtomakethisMWEwork,boosticlshouldincludeitinternally#include#include#includei

c++ - 为什么这在 C++ 中抛出 "CryptoMaterial: this object contains invalid values",但在 python 中工作正常

我正在与Mega.co.nz的API交互,使用python库作为引用,并且此代码正在抛出。私钥属于临时账户。当我只使用第一个素数时它可以工作,但如果我包含第二个素数它会抛出,但在python代码中一切正常。此代码抛出“CryptoMaterial:此对象包含无效值”//g++test.cpp-otest-lcryptopp#include#include#include#includeusingnamespaceCryptoPP;constIntegerc("1085716632638270376006277952876684336882093057659821322727847155