草庐IT

fixed-point-iteration

全部标签

c++ - C++ 中类似 Iterable 的行为是否可以实现?

Java允许类显示Iterable类型,以便客户端可以遍历某些实例的数据集合,如下所示:publicclassMyClass{privateArrayListstrings;privateArrayListints;publicMyClass(){/*generatedata...*/}publicIterableallStrings(){returnstrings;}publicIterableallInts(){returnints;}}这一直让我觉得“干净”,因为它保持封装,允许我更改ArrayLists至LinkedList如果我愿意并且在for(Strings:myClass

c++ - 如何将 'fixed' floatfield 用于 istream/istringstream?

C++有一个名为“fixed”的I/O操纵器,用于以固定(非科学)形式输入/输出float。它适用于输出,但我不明白如何让输入正常工作。考虑这个例子:#include#includeusingnamespacestd;intmain(){doublevalue;istringstream("1.4e1")>>fixed>>value;cout在我看来,它应该是这样工作的。输入流有一些字符串。当我们在其上应用fixed操纵器并尝试读取double/float时,它应该在第一个不是数字或点的字符处停止(第二次/第三次/更多次不接受点).因此,正确的输出将是1.4(当我们遇到'e'时我们停止

c++ - 在实现 iterator 和 const_iterator 类时避免代码重复的最佳实践

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion在实现诸如iterator和const_iterator或类似的类对时,避免代码重复的最佳实践是什么?人们是否通常使用大量const_casts根据const_iterator来实现迭代器?是否使用了某种特征类并最终将iterator和const_iterator定义为通用模板的不同实例?这似乎是一个足够普遍的问题,需要一个规范的解决方案,但我没有找到任何专门针对该问题的文章。

c++ - 为什么 gcc-4.9.2 不支持 std::string.insert(iterator, range) 返回迭代器

根据cppreference,C++11应该支持:templateiteratorinsert(const_iteratorpos,InputItfirst,InputItlast);但是当我尝试使用g++4.9.2编译以下代码时:std::stringstr{"helloworld"},addition{"hmy"};autoiter=str.erase(str.begin(),str.begin()+4);iter=str.insert(next(iter),addition.begin(),addition.end());//Error我收到以下错误(liveexample):e

c++ - 回复:使用 boost::make_transform_iterator 进行引用访问

我正在尝试使用boost::make_transform_iterator为自定义类创建迭代器,该自定义类的数据保存在映射中,迭代器使用键vector来访问值。在我的问题中,map的值是容纳大量数据的容器。由于我无力复制数据,因此我想通过迭代器通过引用访问数据。但是,这样做时,数据已损坏,如我所附的简单示例的输出所示。据我所知,问题在于使用from_key仿函数(使用映射引用初始化)和boost::make_transform_iterator的语义。关于如何使用boost正确执行此操作的任何想法?谢谢,帕特里克#include#include#include#include#incl

c++ - Protocol Buffer : no notation for fixed size buffers?

因为我在this上没有得到答案问题我必须制作原型(prototype)并检查自己,因为我的数据集header需要固定大小,所以我需要固定大小的字符串。那么,是否可以在ProtocolBuffer中指定固定大小的字符串或字节数组?这在这里不是很明显,而且我对强制将固定大小的字符串放入header消息中感到有点难过。--即std::string('\0',128);如果不是,我宁愿使用#pragmapack(1)structheader{...};'编辑问题间接回答here.会回答,除了 最佳答案 protobuf在协议(protoco

c++ - 'auto' 关键字如何知道何时使用 const_iterator 匹配函数重载?

我了解thisquestion的内容但是当使用函数重载时,事情是如何工作的呢?例如在std::map中定义了以下方法:iteratorfind(constkey_type&k);const_iteratorfind(constkey_type&k)const;如何使用auto关键字来选择一个或另一个?以下内容对我来说似乎不正确:autoi=mymap.find(key);//callsthenon-constmethod?constautoi=mymap.find(key);//callstheconstmethod? 最佳答案 s

c++ - iterator_traits中的嵌套指针类型有什么用?

std::iterator_traits类模板定义了5个嵌套类型:iterator_category,value_type,difference_type,pointer和reference.浏览的来源libc++和libstdc++的头文件,可以看到value_type的许多用途,difference_type和iterator_category,但只有一个reference(在std::iter_swap内)并且pointer没有.我的应用程序使用手工构建的代理迭代器/代理引用对。我想过渡到使用Boostiterator_facade这让我可以从默认的T&配置引用类型到任意类型,但

c++ - 调整自定义迭代器以便(a?)reverse_iterator 可以翻转它的输出

最近,用户@MooingDuck设计了concatenated_range,一个优雅的自定义迭代器,解决了“链接”两个迭代器的问题,一切都在幕后。它非常适合预期用途:autorange0=concatenate_ranges(x,x+i-1,x+i,x+a5+1);a6=foo(range0.first,range0.second);现在,我想通过执行(示例#2)来调整它:autorange0=concatenate_ranges(x+a5+1,x+i-1,x+i+1,x+n);a6=foo(std::reverse_iterator(range0.second),std::rever

c++ - 什么时候应该使用 const_iterator 而不是 auto

下面是一个例子,我认为它说明了使用const_iterator比使用“constauto”更可取的情况。这是因为容器不提供cfind()函数。还有其他选择吗?或者应该使用“constauto”而忽略const的缺失?std::stringGetJobTitle(conststd::string&employee){usingEmployeeTitles=std::unordered_map;EmployeeTitlesemployees={{"Alice","Director"},{"Bob","Manager"},{"Charlie","Developer"}};//Option1.