草庐IT

STD_LOGIC

全部标签

c++ - 从整数值返回固定长度的 std::string

问题->将固定长度的字符串返回给std::string*。目标机器->Fedora11。我必须派生一个函数,它接受整数值并将固定长度的字符串返回到字符串指针;例如->int值在0到-127范围内所以对于int值0->它应该显示000对于值-9->它应该返回-009对于值来说-50->它应该返回-050对于值来说-110->它应该返回-110所以简而言之,所有情况下的长度都应该相同。我做了什么:我已经根据如下所示的要求定义了函数。我需要帮助的地方:我派生了一个函数,但我不确定这是否是正确的方法。当我在Windows端的独立系统上测试它时,exe有时会停止工作,但是当我将此功能包含在Lin

c++ - vector 、迭代器和 std::find

有没有办法在不同的vector中使用不同类型的迭代器?或者,是否有一个函数将vector中元素的位置作为整数返回?std::vector::iteratorit;//Iterator//monsterQueueisavectorit=std::find(bot.monsterQueue.begin(),bot.monsterQueue.end(),object);//Checkdowehavetheobjectinthequeueif(it!=bot.monsterQueue.end())//Ifwedohaveit{bot.monsterDists.at(it)=mobDist;//

c++ - G++ undefined reference std::

我一直致力于将我的一款游戏移植到Linux,但似乎无法弄清楚我收到的错误的原因。该游戏最初是用VisualStudio2010编写的,我已经提取了所有需要的内容(header、cpp、纹理)并正在尝试编译。使用g++-c-oexampleFile.oexampleFile.cpp编译文件工作正常,没有任何错误。然而,在链接时,我遇到了数百个关于std函数的错误,例如:Bmp.o:Infunction`Image::Bmp::Bmp()':Bmp.cpp:(.text+0x58):undefinedreferenceto`std::allocator::allocator()'Bmp.c

C++ std::enable_if

我对std::enable_if很陌生,想知道如何使用它。我有一个模板类:templateclassfoo{}现在我只想在a+b等于10时实例化它。我可以使用std::enable_if使这成为可能吗?第二个问题:如果我在类foo中有一个成员templateclassfoo{intc;}我只想在什么时候有ca=5.我如何使用std::enable_if做到这一点?这是使用std::enable_if的正确情况吗? 最佳答案 template::type>classfoo{};这应该可以完成工作;只需确保在实例化模板时永远不会显式提供

c++ - 为什么 std::vector max_size() 函数会返回 -1?

我有一个std::vectorm_vData;m_vData.max_size()总是返回-1。为什么会这样? 最佳答案 可能是因为您在查看之前将其分配给签名类型。max_size的返回值通常是size_t,这是一个无符号类型。在许多平台上直接转换为int将返回-1。试试下面的方法std::vector::size_typev1=myVector.max_size(); 关于c++-为什么std::vectormax_size()函数会返回-1?,我们在StackOverflow上找到一

c++ - std::list、std::vector 方法和 malloc()

在中断处理程序下使用STL:list和STL::vector类型我想避免调用malloc()。问题:防止在STL列表和vector中调用malloc()的最佳方法是什么?创建具有预定义大小的结构然后避免push/pop/erase调用就足够了吗?提前致谢 最佳答案 std::list和std::vector等STL容器具有接受Allocator类型的构造函数。通过提供您自己的分配器而不是使用默认分配器,您可以控制容器分配内存的方式。这个选项很少使用,但是在实时环境中使用你自己的分配器是一个很好的例子,说明了这个特性在哪里有用(并证明

c++ - std::vector 优化

假设从std::vector读取大量值的循环是我程序中的瓶颈,建议我更改voidf(std::vectorv){...while(...){...intx=v[i]+v[j]...}}到voidf(std::vectorv){int*p_v=&v[0];...while(...){...intx=p_v[i]+p_v[j]...}}通过绕过[]运算符,这实际上会提高性能吗? 最佳答案 更有可能(从表面上看)每次调用此函数时复制整个vector是瓶颈。为什么不是下面的呢?voidf(conststd::vector&v)在任何情况下,

c++ - 未解析的外部符号 “std::basic_string”

我正在尝试通过VisualC++编译器使用Maven编译一个项目,但我不断收到关于std::basic_string类的链接错误。我确保将头文件包含到相应的c++文件中。我是漏掉了什么还是犯了一个愚蠢的错误???请让我知道哪里出错了。[ERROR]Parsor.obj:errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)public:int__thiscallstd::basic_string,classstd::allocator>::compare(classstd::basic_string,classstd::a

c++ - 如何查询范围内的任何位是否在 C++ std::bitset 中设置?

我正在寻找一个C++bitset实现,它可以回答是否在一个范围内设置了一个位。std::bitset,vector,和boost::dynamic_bitset都可以访问我可以循环的各个位,但这不是查询位范围以询问是否设置了任何位的最有效方法-我什至不需要知道哪个。bitsetb;if(b.any(33,199)){//...}有图书馆提供这个吗?我想针对其他实现(包括我可能必须编写的实现)运行一些基准测试,但我找不到任何似乎实现此功能的基准。 最佳答案 不幸的是,在C++11bitset中,无法通过仅指定范围的边界来将位范围设置为

c++ - 如何可移植地将 std::system_error 异常与 std::errc 值进行比较?

据我所知,以可移植的方式检查system_error条件的最佳实践之一是将它们的code()值与std::errc枚举。但是,当我尝试运行以下代码时,这似乎不起作用。#include#include#includeintmain(){try{throwstd::system_error(ENOENT,std::system_category());}catch(std::system_errorconst&e){assert(e.code()==std::errc::no_such_file_or_directory);//我是不是误解了这些诊断错误的工作原理,还是我做错了什么?如何将