草庐IT

begin_at

全部标签

c++ - 奇怪的错误,set<int>::begin() 总是返回 const 迭代器

为什么set.begin()总是返回一个const迭代器而不是标准迭代器?35inttest(){36std::setmyset;37myset.insert(2);38myset.insert(3);39int&res=*myset.begin();40returnres;41}test.cpp:39:error:invalidinitializationofreferenceoftype‘int&’fromexpressionoftype‘constint’ 最佳答案 它没有返回const_iterator,而不是std::se

c++ - 使用 std::begin 和 std::end 进行 vector 初始化

为什么可行?有两个不同的字符串"testString"但vector大小分配正确。#include#include#includeintmain(){std::vectorstr;str.assign(std::begin("testString"),std::end("testString"));copy(str.begin(),str.end(),std::ostream_iterator(std::cout,""));std::cout 最佳答案 你很幸运,编译器执行了stringpooling优化。请注意,您所做的仍然是未定

C++ 是否在恒定时间内执行 std::set、std::map 等的 begin/end/rbegin/rend?

对于std::set和std::map等以对数时间查找的数据类型,实现是否需要维护开始和结束迭代器?访问begin和end是否意味着查找可能以对数时间发生?我一直假设开始和结束总是在常数时间内发生,但是我在Josuttis中找不到任何对此的证实。既然我正在做一些我需要对性能有所了解的事情,我想确保涵盖我的基础。谢谢 最佳答案 它们发生在常数时间内。我正在查看ISO/IEC14882:2003标准的第466页:表65-容器要求a.开始();(恒定的复杂性)a.end();(恒定的复杂性)表66-可逆容器要求a.rbegin();(恒定

c++ - 公开 begin() 和 end() 的 const 和非常量版本,以使用智能指针迭代成员 vector

//目录.hclassCat{public:voidconst_meow()const{...};voidmeow(){...};};classCatLibrary{public:std::vector>::iteratorbegin(){returnm_cat_list.begin();}//compileerror,thecompilercomplainscannotcoverttype//from`std::vector>::const_iterator`//to`std::vector>::const_iterator`std::vector>::const_iteratorb

c++ - 与 at() 或索引相比,为什么使用 C++ 迭代器会显着增加代码大小?

我一直在考虑在嵌入式系统(16KBSRAM和64KB闪存,CortexM4)上使用更新的C++语言功能,例如迭代器,但遇到了令人惊讶的障碍。为什么迭代器如此庞大?我的印象是它们基本上是一些指针运算或索引。STL是否引入了一些意外代码?这些是在Windows上使用KinetisDesignStudio和来自here的gcc-arm-none-eabi-4_9工具链使用以下标志。arm-none-eabi-g++-mcpu=cortex-m4-mthumb-mfloat-abi=hard-mfpu=fpv4-sp-d16-Os-fmessage-length=0-fsigned-char-

c++ - D编程: interface at component boundaries

C++严重依赖C风格来导出和导入函数(不是类/接口(interface),如果有的话),因此失去了面向对象的风格,这种风格在许多方面使导出的接口(interface)变得神秘。可以使用D编程语言以面向对象的方式导出接口(interface)吗?我可以用D接口(interface)包装C++(纯)类吗?有哪些可能的因素需要考虑?这种做法是否可行。 最佳答案 您可以找到D的C++互操作性范围的概述here.面向对象风格的互操作性是通过D的interface构造提供的:C++方面#includeclassI//Ourinterface-b

c++ - begin(container) 和 end(container) 是否标准化?

非成员函数模板begin(container)和end(container)是C++0x的一部分吗?如果是这样,它们位于哪个头文件中? 最佳答案 是的,但就像swap一样定义在不同的地方并取决于ADL,begin也是如此和end.“通用”版本在中定义://24.6.5,rangeaccess:templateautobegin(C&c)->decltype(c.begin());templateautobegin(constC&c)->decltype(c.begin());templateautoend(C&c)->decltyp

c++ - .obj : fatal error LNK1107: invalid or corrupt file: cannot read at 0x6592

我正在尝试将.obj模型加载到我的C++opengl3代码中,但由于某种原因它给了我这个错误:1>正在链接...1>.\bunny.obj:fatalerrorLNK1107:无效或损坏的文件:无法在0x6592处读取我试图搜索类似的错误,但有关于.dll或.lib的错误。你能帮我解决这个问题吗?我也尝试过使用不同的obj模型,但它总是给我这个错误。 最佳答案 您正在尝试使用C++链接器加载您的对象模型(可能您刚刚将它添加到项目中,现在它正在尝试编译)。链接器可以处理.obj文件,但它等待它们成为“目标代码”文件(通常也有.obj扩

C++ : How can I solve a first-chance exception caused at an unknown point?

我正在处理的一个C++项目在抛出第一次异常时终止。当我第一次尝试访问map,int>时,这发生在处于Debug模式的VisualStudio2008中其中包含单个键值对。代码在逻辑上没有任何错误。我已经阅读了有关第一次机会异常的信息,并且了解它们可能并不总是有问题。尽管如此,我尝试打破所有此类异常,并且正如预期的那样发现生成了几个不会导致问题的异常。我正在处理的类非常大并且包含许多自定义内存分配。我推测其中之一以某种方式导致了问题。然而,我花了几个小时试图找到一种方法来确定问题出在哪里,但一直无法做到。下面列出了第一次异常输出。这不是很有帮助!First-chanceexception

C++14 元编程 : Automagically build a list of types at compile/init time

使用C++14和CuriouslyRecurringTemplatePattern(CRTP)以及可能的Boost.Hana的某种组合(或boost::mpl如果您愿意),我可以在编译时(或静态初始化时)构建一个类型列表而无需显式声明吗?例如,我有这样的东西(在Coliru上查看):#include#include#includenamespace{structD1{staticconstexprautoval=10;};structD2{staticconstexprautoval=20;};structD3{staticconstexprautoval=30;};}intmain(