草庐IT

delete_all

全部标签

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++ - 为什么boost::when_all会产生一个新线程

下面的代码是用boost1.62编译的。#defineBOOST_THREAD_VERSION4#defineBOOST_THREAD_PROVIDES_EXECUTORS#include#include#include#includeusingnamespacestd::literals::chrono_literals;intmain(){autostart=boost::make_ready_future();boost::loop_executorex;autoa=start.then(ex,[](auto&&){std::cout这会产生4个任务(a、b、c、d),它们之间有

C++/boost::thread 程序在 join_all 后挂起并从 Main 返回

第一次在这里发帖,但是我已经彻底搜索了这个问题的解决方案,但没有解决方案。我有一个类,它基本上使用静态范围的线程池来计算矩阵的条目。当需要进行新的计算时,静态条件变量会发出信号。当程序结束时,一个静态bool标志被改变,主线程在退出前调用join_all。问题是当我从intmain()返回时,程序似乎在销毁静态变量期间挂起。这是执行计算的类的粗略源代码:classFunctionCalculator{public:staticvoidcreateWorkers();staticvoiddestroyWorkers();staticvoidcalcFunction();private:s

c++ - boost Asio : waiting until thread_group has processed all posted tasks?

我有一个对象,一旦创建就会在后台执行许多任务,但应该阻塞直到/所有/发布的任务完成。即:structrun_many{boost::asio::io_servicem_io_service;boost::thread_groupm_threads;boost::asio::signal_setm_signals;voidevaluate(std::stringwork,inti){/*...*/}voidrun_tasks(inttasks,std::stringwork){{boost::asio::io_service::workw(m_io_service);//for(inti

c++ - DELETE_ON_CLOSE 发生得太早

我正在尝试在另一台机器上创建一个进程,该进程在完成后会自行删除。我在CreateFile中使用DELETE_ON_CLOSE标志。这种方法有点流行,但我遇到了麻烦,因为我无法在它打开时执行它(预期但这是某些解决方案所做的)。为了解决这个问题,我尝试使用读取权限打开文件。DELETE_ON_CLOSE标志表示它应该只在所有指向它的指针都消失时才删除文件。我有一个指向它的读取指针,我关闭了写入句柄,文件被删除,使我打开的句柄不可读。任何其他解决方法将不胜感激。我还考虑过这样一种可能性,即由于这是一个远程文件系统,因此句柄可能会发生一些奇怪的事情。我无法修改我发送过来的可执行文件的代码,所以

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++ - 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++ - 全局重载运算符 new/new[] delete/delete[] C++

我有这个重载operatornew和delete的示例代码#include#include#include#ifdefUSE_ZMALLOCextern"C"{#include"zmalloc.h"}#definem_malloczmalloc#definem_freezfree#else#ifdefUSE_JEMALLOC#include#definem_mallocje_malloc#definem_freeje_free#else#include"malloc.h"#definem_mallocstd::malloc#definem_freestd::free#endif#end

算法打卡day03|链表专题01:虚拟头节点使用、单链表查找删除元素、链表设计通过索引(add、delete、get)、使用双指针思路实现链表反转|Leetcode203、707、206

1.基础知识——链表是由指针串联在一起的线性结构分类:(1)单链表:每个节点由数据域与指针域组成{data,next}(2)双链表:每个节点由数据域及指针域(两个指针)组成{data,pre,next}(3)循环链表:节点结构与单链表一致,但是首尾相连存储:内存分布不是连续的链表定义代码※链表优点在于长度不固定,能够实现动态增删,适用于增删频繁但是查询频率比较低的情景Leetcode203.移除链表元素题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/分析:经典链表操作,主要需要考虑两种场景当前节

python - SWIG、C++ 和 Python : C++ temporary objects deleted too soon

我遇到了SWIG过早删除临时C++对象的问题。Python测试脚本的示例输出:--------------------------------------------------------------------------------Worksasexpected:b0=Buffer(0,0,0,)b1=Buffer(1,1,1,)b0=Buffer(0,0,0,1,1,1,)y=Buffer(0,0,0,1,1,1,)b1=Buffer(1,1,1,)repr(b0)=Buffer(id=0,vectorat0x020bf450,dataat0x020aeb30,size=6)r