jjzjj

stl-algorithm

全部标签

c++ - 我可以通过 for_each <algorithm> 在 C++ 中的指针 vector 上调用 `delete` 吗?

假设我有一个std::vectorobjs(出于性能原因,我的指针不是实际的Objs)。我用obj.push_back(newObj(...));填充它反复。完成后,我必须delete被推回的元素。一种方法是这样做:for(std::vector::iteratorit=objs.begin();it!=objs.end();++it){delete*it;}但是,如果我可以使用for_each我很感兴趣算法做同样的事情:#include...for_each(objs.begin(),objs.end(),delete);你怎么看? 最佳答案

c++ - STL 迭代器 - 目的

STL迭代器的用途是什么?为什么程序员要创造这个概念? 最佳答案 迭代器允许您将算法与容器分开。只要您有开始和结束迭代器,并且知道迭代器的功能(随机访问等),您就可以在迭代器指定的范围内进行操作。例如,参见std::for_each、std::transform。通过这种方式,您可以只实现算法的一个版本,而无需为您希望算法在其上运行的每个容器编写一个新版本。 关于c++-STL迭代器-目的,我们在StackOverflow上找到一个类似的问题: https:/

c++ - 将 python numpy 数组转换为 C++ STL vector

我正在寻找一种在C++中读取包含numpy数组的文本文件并将数据放入vector>的方法,谁能帮帮我?非常感谢。阿奇编辑:文本文件的格式[[[01][23][45][67][89]][[1011][1213][1415][1617][1819]][[2021][2223][2425][2627][2829]][[3031][3233][3435][3637][3839]]]也许更易读:[[[01][23][45][67][89]][[1011][1213][1415][1617][1819]][[2021][2223][2425][2627][2829]][[3031][3233][3

c++ - 使用 C++11 迭代语法时从 STL 列表中删除

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Erasinganelementfromacontainerwhileinsidearange-basedforloopSimilartothis,您可以在使用新的for(autoitem:list)语法从STL列表中删除它吗?这是一个完整的例子(崩溃了!)#includeusingnamespacestd;intmain(){listli;li.push_back(4);li.push_back(5);li.push_back(6);for(autonum:li){if(num==5)li.remove(n

c++ - 没有匹配函数调用 ‘find'

我有以下代码:#include#include#include#includeusingnamespacestd;intmain(){typedefvectorIntContainer;typedefIntContainer::iteratorIntIterator;IntContainervw;IntIteratori=find(vw.begin(),vw.end(),5);if(i!=vw.end()){printf("Find5invector\n");//foundit}else{printf("Couldn'tfind5invector\n");//couldn'tfound

c++ - Clang 无法识别 <algorithm> 中的 std::all_of

在我们的测试环境中编译时遇到了以下问题:尽管窗口已经在工作,但我们在Freebsd9上的构建失败并显示以下错误消息:error:nomembernamed'all_of'innamespace'std'鉴于我将-std=c++11添加到我们的Cmake标志中,我想知道为什么这不起作用。clangversion3.4(tags/RELEASE_34/final)Target:i386-portbld-freebsd9.1Threadmodel:posix函数如下#include...inlineboolis_positive_number(conststd::string&str){if

C++ STL学习

C++STL学习目录C++STL学习容器库概览对可以保存在容器中的元素的限制容器支持的操作所有容器都支持的操作或容器成员迭代器迭代器的公共操作迭代器的类型迭代器的const属性迭代器的操作类型迭代器范围使用左闭合区间的编程假定顺序容器顺序容器概述顺序容器的类型和特点确定使用哪种顺序容器顺序容器的操作顺序容器的定义和初始化向顺序容器添加元素初始化和插入操作的关键概念访问操作删除元素的操作特殊的forward_list的操作改变容器的大小vector对象的空间增长策略管理容量的成员函数容器操作可能使迭代器失效额外的string操作构造string的其他方法substr操作关联容器泛型算法容器库概览

c++ accumulate如何将特定函数应用于最后一个元素

我有一个关于std::accumulate的问题。通常,accumulate需要std::vectorvect,类型的种子T并将(左)折叠函数fTxU->U对于那个范围:Tresult=accumulate(vect.begin(),vect.end(),seed,f);是否有一种自然的方式来应用特定版本的f最后一个元素?这是针对PDE的,我对最后一步有特殊条件。我们可以这样做:Tresult1=accumulate(vect.begin(),vect.end()-1,seed,f1);Tresult2=f2(result1,vect.back());但我想知道是否有更自然的方法,因为

c++ - 如何使用 STL 算法找到分隔字符串中两个不同字母的最短星号序列?

我有这样一个字符串:A*A**B***A**我对两个不同字母之间的星号序列感兴趣,特别是我需要找到最短的此类序列的长度。对于上面的字符串,答案当然是2:A**B我可以使用我习惯的传统循环轻松解决这个问题:conststrings="A*A**B***A**";string::size_typelast_letter=-1,min_seq_len=s.size();for(inti=0;i但是,有没有办法使用C++来做到这一点algorithmslibrary、迭代器等?我问这个问题是因为我注意到我在学习如何使用这些工具来解决算法问题时遇到了困难,相反我发现手动编写循环更容易。我想最终学

algorithm - 使用一组质数按升序生成整数

我有一组素数,我必须仅使用这些素数按升序生成整数。例如,如果集合是p={2,5}那么我的整数应该是1,2,4,5,8,10,16,20,25,...有没有什么高效的算法可以解决这个问题? 最佳答案 删除一个数字并将它的所有倍数(通过集合中的质数)重新插入优先级队列是错误的(在问题的意义上)-即它生成正确的序列,但效率低下。它在两个方面效率低下-首先,它过度生产序列;其次,每个PriorityQueue操作都会产生额外的成本(操作remove_top和insert通常不是O(1),当然不在任何列表中-或基于树的PriorityQueu