草庐IT

do_iterations

全部标签

C++标准写法: Does "through all iterators in the range" imply sequentiality?

ThisSOquestion引发了关于std::generate和标准做出的保证的讨论。特别是,你能否使用具有内部状态的函数对象并依赖于generate(it1,it2,gen)来调用gen(),将结果存储在*it,再调用gen(),存入*(it+1)等,还是可以从后面开始,比如?标准(n3337,§25.3.7/1)是这样说的:Effects:Thefirstalgorithminvokesthefunctionobjectgenandassignsthereturnvalueofgenthroughalltheiteratorsintherange[first,last).Thes

c++ - 排序 : Is this performance difference for real or am I doing something wrong?

我需要对很多由8个float组成的小数组进行排序。最初我使用的是std::sort但对其性能不满意,我尝试了由此生成的比较交换算法:http://pages.ripco.net/~jgamble/nw.html测试代码如下:templateboolPredDefault(constT&a,constT&b){returna>b;}templateboolPredDefaultReverse(constT&a,constT&b){returnavoidSort8(T*Data,bool(*pred)(constT&a,constT&b)=PredDefault){#defineCmp_S

c++ - 可以从 istream_iterator 制作 move_iterator 吗?

考虑以下代码:typedefistream_iteratorchar_itr;char_itreos;stringll("sometexthere");istringstreamline_in(ll);char_itrstart(line_in);move_iteratormstart(start);//!!!move_iteratormeos(eos);vectorvc(mstart,meos);上面的代码由于行(!!!)而无法编译:errorC2440:'return':cannotconvertfrom'constchar'to'char&&'但是,如果您分别用start和eos

c++ - 我如何定义 map::iterator 列表和 list::iterator 映射

我需要一个Map::iterator列表和List::iterator映射。我该怎么做:typedefstd::listList;typedefstd::mapMap;也许我可以使用迭代器的前向声明之类的东西? 最佳答案 像这样的东西应该可以帮助你:#include#include#include#include#includestructdecl_t{typedefstd::mapmap_t;typedefstd::list>list_t;list_t::iteratorit;};intmain(intargc,constchar

c++ - 规则 "A user-defined but do-nothing destructor is also a non-trivial destructor"是否过于严格?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。ImprovethisquestionclassBase{public:~Base(){}private:intval;};Basebase;//aglobalvariable你看,析构函数什么都不做,和c++编译器提供的默认析构函数一样。但是根据帖子Whatisanon-trivialdestructorinC++?,析构函数仍然是一个非平凡的析构函数我知道,标准中的每条规则都必须严格。但是,根据我粘贴的上面的代码,用户定义

c++ - boost 图形库 : Bundled Properties and iterating across edges

只是想了解一下BoostGraphLibrary,我有几个问题。我正在编写一些代码,它是BGL图的包装类。我的想法是,我可以随心所欲地操作图表,然后调用包装方法以GEXF(XML)格式输出图表。我的代码是这样的:structVertex{std::stringlabel;...};structEdge{std::stringlabel;doubleweight;...};typedefboost::adjacency_listGraphType;templateclassGEXF{private:Graphgraph;...};templatevoidGEXF::buildXML(){

c++ - 具有不完整 Value 参数的 Boost.Iterator Facade

我正在尝试将boost::iterator_facade与不完整的Value一起使用模板参数。这失败了,因为iterator_facade正试图检查类型is_pod。这是预期的行为吗?我可以解决这个限制吗某种方式?我可以编写一个简单地代理foo和为它提供隐式转换,但我宁愿有一个更简单的解决方案。#includeclassiter:publicboost::iterator_facade{private:friendclassboost::iterator_core_access;voidincrement(){}boolequal(iterconst&other)const{retur

c++ - boost::spirit 1.53 multi_pass iterator相关的编译错误

代码:typedefstd::string::const_iteratoriterator;namespaceparsers{namespacespirit=::boost::spirit;namespaceascii=::boost::spirit::ascii;namespacephoenix=::boost::phoenix;spirit::qi::ruleaction_parser='"'>spirit::qi::lit("action")>spirit::qi::labels::_r1>'"';}错误:>1>CL:warning:Thisheaderisdeprecated.

c++ - std::deque: "insertion and deletion of elements may invalidate iterators"是什么意思?

我正在阅读有关std::deque容器的信息,文档指出Insertionanddeletionofelementsinstd::dequemayinvalidateallitsiterators这是我对上述陈述的理解版本,如果我误解了陈述或遗漏了什么,请告诉我考虑以下代码std::deques;s.push_back(12);autoi=s.begin();s.push_front(45);//Afterpushing45atthebacknow`i`maybeinvalid.这个理解正确吗? 最佳答案 你是对的。例如之后std::

c++ - C++11 中的 checked_array_iterator<T>

C++11提供了std::array包装C数组,但仅限于在编译时知道数组大小的地方。处理大小仅在运行时已知的数组的最佳方法是什么?背景我正在将一些代码从MSVC移植到GCC。MSVC提供了stdext::checked_array_iterator为这样的代码行提供一些保护的模板:std::copy(v.begin(),v.end(),stdext::checked_array_iterator(arr,numVals));到目前为止,我可以想到两种选择:放弃安全检查或编写自己的实现。关于这一点,如果您对此实现提出任何建设性意见,我将不胜感激:namespacestdext{templ