草庐IT

ostream_iterator

全部标签

c++ - 为什么 boost filter_iterator 有奇怪的 make_filter_iterator 函数?

在经历了一些痛苦之后,我设法拼凑了这个boostfilter_iterator的最小示例usingnamespacestd;std::functionstlfunc=[](uint32_tn){returnn%3==0;};intmain(){vectornumbers{11,22,33,44,55,66,77,3,6,9};autostart=boost::make_filter_iterator(stlfunc,numbers.begin(),numbers.end());autoend=boost::make_filter_iterator(stlfunc,numbers.end

c++ - map<T,T>::iterator 作为参数类型

我有一个带有私有(private)映射成员的模板类templateclassMyClass{public:MyClass(){}private:std::mapmyMap;}我想创建一个接受映射迭代器的私有(private)方法voidMyFunction(std::map::iterator&myIter){....}但是,这会出现编译错误:标识符“迭代器”。我不需要传递一个抽象迭代器,因为MyFunction知道它是一个映射迭代器(并且只会用作myMap的交互器)并且会这样对待它(访问和修改myIter->second)。将myIter->second传递给MyFunction是不

c++ - c++调用基类的ostream友元函数

所以,我有两个类:classBase{private:intnumber;public:friendostream&operator我的问题是,如何从子类中调用基类的友元函数输出其内容:output提前致谢:) 最佳答案 output(n) 关于c++-c++调用基类的ostream友元函数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10367271/

c++ - "vector iterator + offset out of range"断言有用吗?

这个完美的程序在VisualStudio2013的Debug模式下失败:#include#include#includeusingnamespacestd;voidmain(){vectorv={3,1,4,1,5,9,2,6,5,3};for(autoiFrom=v.cbegin(),iTo=iFrom+5;iFrom!=v.cend();iFrom=iTo,iTo+=5)coutvectoriterator+offsetoutofrange断言失败。它失败是因为iTo>v.cend(),这在这里是无害的。调试器测试没有被取消引用的迭代器的值有什么意义?顺便说一句,我知道我可以将上面

c++ - 如何通过 C++ 中的升压套接字发送 ostream?

我在使用protobuf进行进程间通信时遇到了一些问题。Protobuf允许一组序列化格式:SerializeToArray(void*data,intsize):boolSerializeToCodedStream(google::protobuf::io::CodeOutputStream*output):boolSerializeToFileDescriptor(intfile_descriptor):boolSerializeToOstream(ostream*output)我的问题是,我不知道如何将它与我正在使用的boostasio套接字一起使用,因为我实现了它们来发送字符串

c++ - ostream/ofstream 继承问题

我正在编写C++程序,我需要一些帮助来理解错误。默认情况下,我的程序会打印到终端(STDOUT)。但是,如果用户提供文件名,程序将打印到该文件。如果我正在写入终端,我将使用std::cout对象,而如果我正在写入一个文件,我将创建并使用std::ofstream对象。但是,我不想一直检查我是否应该写入终端或文件。由于std::cout和std::ofstream对象都继承自std::ostream类,我想我会创建一种接受std::ostream对象的print_output函数。在调用此函数之前,我会检查是否应该打印到文件中。如果是这样,我将创建std::ofstream对象并将其传递

c++ - 将 vector 的 vector 打印到 ostream

请考虑以下代码。我正在尝试将vector的vector输出到ostream。#include#include#include#include#includetemplatestd::ostream&operator&v){usingnamespacestd;copy(v.begin(),v.end(),ostream_iterator(os,"\n"));returnos;}intmain(){usingnamespacestd;vectorv1;cout>v2;cout我输出字符串vector的语句有效。我输出字符串vector的vector的那个没有。我正在使用g++4.7.0。我

c++ - 自定义双向迭代器的 reverse_iterator 上的 for_each 需要 OutputIterator

我创建了一个简单的不可变双向迭代器:#include#include#include#include#includeclassmy_iterator:publicstd::iterator{intd_val;public:my_iterator():d_val(0){}my_iterator(intval):d_val(val){}my_iteratoroperator--(int){d_val--;returnmy_iterator(d_val+1);}my_iterator&operator--(){d_val--;return*this;}my_iteratoroperator+

c++ - Ostream << 重载困惑

当您为类重载ostream&operator当ostream已经可以通过引用直接修改时,返回ostream有什么好处?这对我来说似乎是多余的-虽然我确定它不是:) 最佳答案 它允许将输出“链接”在一起。如:std::cout这等同于:operator 关于c++-Ostream https://stackoverflow.com/questions/7180731/

c++ - Vector.erase(Iterator) 导致错误的内存访问

我正在尝试对存储在vector中的videoObjects进行Z-Index重新排序。计划是识别将要放在vector第一个位置的videoObject,将其删除,然后将其插入到第一个位置。不幸的是,erase()函数总是导致错误的内存访问。这是我的代码:测试应用.h:vectorvideoObjects;vector::iteratoritVid;测试应用.cpp://GetthevideoObjectwhichrelatestotheusereventfor(itVid=videoObjects.begin();itVid!=videoObjects.end();++itVid){i