草庐IT

Iterator

全部标签

c++ - 迭代 boost::variant 中的类型

我正在使用boost变体来保存一些生成的类型,现在我的代码生成器会创建一个带有类型的header和一个能够保存它们的变体。在初始化时,我想迭代变量中允许的类型,而不是变量当前持有的类型。我可以使用变体来做到这一点吗? 最佳答案 boost::variant通过types公开其类型,这是一个MPL列表。您可以使用mpl::for_each对MPL列表执行运行时操作。:structprinter{templatevoidoperator()(Tt){std::coutvar;boost::mpl::for_each(printer())

c++ - 迭代 boost::variant 中的类型

我正在使用boost变体来保存一些生成的类型,现在我的代码生成器会创建一个带有类型的header和一个能够保存它们的变体。在初始化时,我想迭代变量中允许的类型,而不是变量当前持有的类型。我可以使用变体来做到这一点吗? 最佳答案 boost::variant通过types公开其类型,这是一个MPL列表。您可以使用mpl::for_each对MPL列表执行运行时操作。:structprinter{templatevoidoperator()(Tt){std::coutvar;boost::mpl::for_each(printer())

c++ - 用 C++ 编写我自己的类似 STL 的迭代器的实现

我目前正在尝试了解各种语言中迭代器的内在特性,即它们的实现方式。比如下面这个类暴露了list接口(interface)。templateclassList{public:virtualvoidInsert(intbeforeIndex,constTitem)throw(ListException)=0;virtualvoidAppend(constTitem)=0;virtualTGet(intposition)constthrow(ListException)=0;virtualintGetLength()const=0;virtualvoidRemove(intposition)t

c++ - 用 C++ 编写我自己的类似 STL 的迭代器的实现

我目前正在尝试了解各种语言中迭代器的内在特性,即它们的实现方式。比如下面这个类暴露了list接口(interface)。templateclassList{public:virtualvoidInsert(intbeforeIndex,constTitem)throw(ListException)=0;virtualvoidAppend(constTitem)=0;virtualTGet(intposition)constthrow(ListException)=0;virtualintGetLength()const=0;virtualvoidRemove(intposition)t

c++ - 输入迭代器和只读前向迭代器有什么区别?

输入迭代器和只读前向迭代器有什么区别?由于后者是只读的,它们显然不能满足输出迭代器的要求。并且,正因为如此,它们实际上是具有额外保证(如果有的话)的输入迭代器。问题是,有哪些额外的保证?我的猜测是,前向迭代器是多channel的,而输入迭代器不是,对吗? 最佳答案 是的,输入迭代器是一次性迭代器。您只能对它们进行一次迭代,而前向迭代器是多遍的。来自§24.2.3[input.iterators]p2(表格),++r的前置/后置条件列:pre:risdereferenceable.post:risdereferenceableorri

c++ - 输入迭代器和只读前向迭代器有什么区别?

输入迭代器和只读前向迭代器有什么区别?由于后者是只读的,它们显然不能满足输出迭代器的要求。并且,正因为如此,它们实际上是具有额外保证(如果有的话)的输入迭代器。问题是,有哪些额外的保证?我的猜测是,前向迭代器是多channel的,而输入迭代器不是,对吗? 最佳答案 是的,输入迭代器是一次性迭代器。您只能对它们进行一次迭代,而前向迭代器是多遍的。来自§24.2.3[input.iterators]p2(表格),++r的前置/后置条件列:pre:risdereferenceable.post:risdereferenceableorri

c++ - 如何使用带有指针 vector 的 STL 算法

我有一个不属于容器的指针vector。如何在指针的目标上使用算法。我尝试使用boost的ptr_vector,但它会在超出范围时尝试删除指针。下面是一些需要工作的代码:vectormyValues;//...myValuesispopulatedboolconsistent=count(myValues.begin(),myValues.end(),myValues.front())==myValues.size();autov=consistent?myValues.front():accumulate(myValues.begin(),myValues.end(),0)/myVal

c++ - 如何使用带有指针 vector 的 STL 算法

我有一个不属于容器的指针vector。如何在指针的目标上使用算法。我尝试使用boost的ptr_vector,但它会在超出范围时尝试删除指针。下面是一些需要工作的代码:vectormyValues;//...myValuesispopulatedboolconsistent=count(myValues.begin(),myValues.end(),myValues.front())==myValues.size();autov=consistent?myValues.front():accumulate(myValues.begin(),myValues.end(),0)/myVal

c++ - 定义我自己的容器的迭代器

我对定义自己的迭代器的一些概念感到困惑:来自:http://www.cs.northwestern.edu/~riesbeck/programming/c++/stl-iterator-define.html,这似乎建议使用定义运算符的内部迭代器类。许多其他人继承基类iterator来重新定义运算符。我很困惑应该使用哪些方法。为什么会有typedefptrdiff_tdifference_type;例如,在容器类的定义开头?非常感谢! 最佳答案 关于STL容器究竟是什么的C++规范要求任何STL容器类型都有几个不同的可用字段。一些,

c++ - 定义我自己的容器的迭代器

我对定义自己的迭代器的一些概念感到困惑:来自:http://www.cs.northwestern.edu/~riesbeck/programming/c++/stl-iterator-define.html,这似乎建议使用定义运算符的内部迭代器类。许多其他人继承基类iterator来重新定义运算符。我很困惑应该使用哪些方法。为什么会有typedefptrdiff_tdifference_type;例如,在容器类的定义开头?非常感谢! 最佳答案 关于STL容器究竟是什么的C++规范要求任何STL容器类型都有几个不同的可用字段。一些,