jjzjj

sequence

全部标签

c++ - boost::asio::streambuf - 如何重用缓冲区?

我正在实现使用asiosocket.async_read()和boost::asio::async_read_until()方法从套接字异步读取数据的TCP服务器。两者都使用相同的处理程序从boost::asio::streambuf读取数据。通过async_read()调用的完美处理程序:voidhandle_read(constboost::system::error_code&ec,std::size_tytes_transferred)){m_request_buffer.commit(bytes_transferred);boost::asio::streambuf::con

c++ - 派生和破坏封装,还是违反 DRY?

我有两个C++类:Sequence,就像std::vector和File,它是一个表示机器上文件的字符串序列。从Sequence派生File是很容易的事。它的行为完全相同,但增加了读写文件的功能。File特定的功能很容易实现,无需将Sequence的数据成员标记为protected。相反,它们可以是私有(private)的,File可以使用Sequence的公共(public)接口(interface)。到处都是快乐的时光。我想创建一个Array类,在内部管理动态分配的内存。Array对象不能调整大小;大小在构造函数中指定。*这就是事情变得有争议的地方。从概念上讲,从Array派生Se

c++ - boost ASIO streambuf

我对boostasio::streambuf类中的输入序列和输出序列感到困惑。根据文档中的代码示例(用于发送数据),表示输入序列的缓冲区似乎用于写入套接字,而表示输出序列的缓冲区用于读取。例子-boost::asio::streambufb;std::ostreamos(&b);os现在,有命名问题吗? 最佳答案 boost::asio::streambuf的命名法类似于C++标准中定义的,并在标准模板库中跨各种类使用,其中数据写入输出流,数据从输入流读取。例如,可以使用std::cout.put()写入输出流,使用std::cin

c++ - 如何过滤 std::integer_sequence

如果我理论上有一个整数序列,比如std::integer_sequence我如何使用一些编译时谓词过滤它以获得可能更小的std::integer_sequence?为了论证,假设我只想要偶数值,这导致了“我怎样才能使以下static_assert(或接近的东西)通过?”的问题static_assert(std::is_same_v,decltype(FilterEvens(std::integer_sequence{}))>,"Integersequencesshouldbeequal");这个问题的灵感来自于思考我们如何完成删除两个位集(thisquestion)之间的重复项,假设我

c++ - 继承层次结构 : Constructor & Destructor execution sequence

在这里http://www.parashift.com/c++-faq-lite/multiple-inheritance.html[25.14]节说Theveryfirstconstructorstobeexecutedarethevirtualbaseclassesanywhereinthehierarchy.我尝试使用以下程序验证它:A(purevirtual)|B|C(virtual)/\(virtual)ED\/F|G(purevirtual)|H每个类都有一个c'tor和virtuald'tor。输出如下:ABCEDFGH~H~G~F~D~E~C~B~APressanyke

c++ - 为什么我不能在一个序列中放置多个元素?

C++11引入了emplace函数来在序列中就地构造元素。这是对复制或移动元素的insert的补充。但是,在insert的多个重载中,只有单个元素插入版本,即iteratorinsert(const_iteratorp,Tconst&x);iteratorinsert(const_iteratorp,T&&x);有一个emplace版本,templateiteratoremplace(const_iteratorp,Args&&...x);有什么理由不允许使用emplace就地构造n元素吗?当重载时,templateiteratoremplace(const_iteratorp,siz

c++ - 如何依次执行不同参数类型的一元函数对象?

我正在设计一种机制,它将按顺序执行一组一元函数对象。这些函数对象是在运行时赋值的,问题是:这些函数对象的参数类型不同。我想做的是这样的:classcommand_sequence{private:/*somekindofcontainer*/public:voidadd(FUNC_OBJ&func,PARAMval);voidrun(void);};classcheck_temperature{public:voidoperator()(intcelsius){if(celsius>26){cooler.switch_on();}}};classlog_usage{public:voi

c++ - 为什么 C++ 标准 1.9/5 谈论 "possible execution sequences"?

根据C++03标准1.9/5Aconformingimplementationexecutingawell-formedprogramshallproducethesameobservablebehaviorasoneofthepossibleexecutionsequencesofthecorrespondinginstanceoftheabstractmachinewiththesameprogramandthesameinput.我不明白“作为其中一个”部分。如果我有一个特定的程序和一个特定的输入,并且我的程序不包含未定义的行为,为什么可观察到的行为会有所不同?“一种可能的执行顺

c++ - 在 C++ 中将字节序列重复到更大缓冲区的最简单方法

给定(在C++中)char*byte_sequence;size_tbyte_sequence_length;char*buffer;size_tN;假设byte_sequence和byte_sequence_length被初始化为一些任意长度的字节序列(及其长度),并且buffer被初始化为指向N*byte_sequence_length字节,将byte_sequence复制到bufferN次最简单的方法是什么?STL/BOOST中是否已经有类似的功能?例如,如果序列是“abcd”,N是3,那么buffer最终将包含“abcdabcdabcd”。 最佳答案

c++ - "Ambiguous conversion sequence"- 这个概念的目的是什么?

在N465916.3.3.1隐式转换序列中说10Ifseveraldifferentsequencesofconversionsexistthateachconverttheargumenttotheparametertype,theimplicitconversionsequenceassociatedwiththeparameterisdefinedtobetheuniqueconversionsequencedesignatedtheambiguousconversionsequence.Forthepurposeofrankingimplicitconversionsequen