草庐IT

istream_iterators

全部标签

c++ - 如何从CGAL中的Edge_iterator获取源点和目标点

我对某些点进行了Delaunay三角剖分,并希望按长度升序迭代其中的所有边,以构建最小跨度线程。我试过以下方法,但无法编译:typedefCGAL::Exact_predicates_inexact_constructions_kernelK;typedefCGAL::Delaunay_triangulation_2T;typedefK::Point_2P;typedefT::Vertex_handleVh;typedefT::Vertex_iteratorVi;typedefT::Edge_iteratorEi;boolsortFunction(Eia,Eib){K::FTla,lb

c++ - 如何手动将数据放入 boost::asio::streambuf 以便稍后使用 std::istream 读取它?

我正在尝试使用std::istream作为数据源。我想将自定义二进制数据放置到istream的流缓冲区中,以便稍后可以从istream中检索它。我已经阅读了有关boost::asio::streambuf的内容,以及如何使用它来完成我想要的,但使用套接字作为数据源而不是我想使用的内存缓冲区。据我了解documentation,步骤应该是:创建一个boost::asio::streambuf创建一个传递streambuf的std::istream调用boost::asio::streambuf::prepare以获取表示输出序列的缓冲区列表。以某种方式写入输出序列。调用boost::as

c++ - 为什么调用 istream::tellg() 会影响我的程序的行为?

我正在尝试将24位位图图像转换为灰度图像。#include#include#include#includeusingnamespacestd;classpixel{public:unsignedcharb;unsignedcharg;unsignedcharr;voiddisplay(){cout当我删除couttellg语句时,循环只运行两次!我不明白删除cout语句有什么不同?结果:只有一个像素变为灰度。我在这里找到了我的问题的一个更简单的版本Readingandwritingtofilessimultaneously?但是没有找到解决方案... 最佳答

c++ - 为什么我不能用 const_iterator 调用模板基类构造函数?

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭8年前。由于某些原因,下面的代码给出了错误Symbol'TemplateBase'couldnotberesolved.:templateclassTemplateBase{TemplateBase(std::map::const_iteratoranIterator){}};classSubClass:publicTemplateBase{SubClass(std::map::const_iteratoranIterator)

c++ - std::istream 类型是 EqualityComparable 吗?

我的问题会有一个bool值答案:是或否。不管是哪一个,有人能解释一下下面的代码是如何被GNU-g++4.9.2和clang3.5编译的,而GNU-g++5.1.1不再接受它,声称没有匹配的operator==?以及如何更改它,对于最后一个编译器,为了获得相同的结果,即让operator>>能够以如此简单的方式区分,是否它是由标准输入流或其他东西调用的?#include#includestructS{};std::istream&operator>>(std::istream&i,S&s){if(i==std::cin)std::clog>s;std::ifstreaminp(args[

c++ - 如何转发声明 boost::ptree::iterator

我想在我的项目中使用boostptree,但由于ptree.hpp导致包含另外1000个头文件,这大大增加了编译时间(例如从1秒到7秒),并且因为它在20多个不同的cpp文件中需要这是NotAcceptable(预编译的header不会改善太多)。所以我正在考虑将boostptree封装在我自己的类中,比如//myptree.h#includeclassmyptree{private:boost::property_tree::ptree*m_tree;public:...//addingnew(singlevalue)memberstothethetreevoidput(consts

c++ - 来自 istream 的子流

假设我有一个ifstream,它表示一个包含许多聚合在一起的子文件的大文件。我希望能够从代表文件一部分的较大ifstream(给定大小和偏移量)创建一个“子”istream,以便其他代码可以从中读取子流就好像它是一个独立的istream。关于如何实现这一点有什么想法吗?编辑-我宁愿避免提升。 最佳答案 这是一个streambuf“过滤器”的示例,它从指定位置开始读取包含的streambuf并读取到指定大小。您创建substreambuf,将原始streambuf传入,然后substreambuf转换访问,以便从底层中的所需位置读取所

C++ : syntax for passing iterator to a function?

我正在制作一个类,它是一种容器,我想制作一个可以采用“第一个”和“最后一个”迭代器的构造函数,如std::vector和其他标准容器。正确的语法是什么?(我想要一个模板函数,它可以接受任何可用的第一个/最后一个迭代器类型(就像我认为的标准库)。非常感谢!举个例子,我想要这样的东西:templateMyClass(...first,...last)但是……是什么?非常感谢。关于第一个答案:我想要一个将迭代器作为参数的特定构造函数(因为我已经有了将值和指针作为参数的构造函数)编辑:这样可以吗?templateMyClass(std::iteratorfirst,std::iteratorl

c++ - 是否可以推断出 std::insert_iterator 包含的类型?

我有一个需要模板化迭代器类型的函数。它当前取消引用迭代器以检查被迭代的类型。templatevoidfunc(Iteratori){//Inspectthesizeoftheobjectsbeingiteratedconstsize_ttype_size=sizeof(*i);...}我最近发现一些标准迭代器类型,例如std::insert_iterator将*i定义为对i的简单引用.即sizeof(*i)是迭代器本身的大小;与sizeof(i)或sizeof(***i)相同是否有一种通用方法(支持C++03)来确定任何标准迭代器正在迭代的对象的大小或类型?

c++ - 如何为非 const 类调用 const_iterator?

这个问题在这里已经有了答案:Howtousetwofunctions,onereturningiterator,theotherreturningconst_iterator(2个答案)关闭8年前。我阅读了一些与此问题相关的其他线程,但没有为我的问题提供解决方案。希望大家给我出出主意或建议。我正在尝试实现这个名为Map的类。它应该包含2个迭代器-iterator和const_iterator。我实现了它们-iterator继承自const_iterator,在Map类中我有以下函数:iteratorbegin();iteratorend();const_iteratorbegin()c