草庐IT

binary-tree

全部标签

c++ - 为什么 std::binary_search 返回 bool?

根据草案N4431,函数std::binary_search在算法库中返回bool,[binary.search]:templateboolbinary_search(ForwardIteratorfirst,ForwardIteratorlast,constT&value);templateboolbinary_search(ForwardIteratorfirst,ForwardIteratorlast,constT&value,Comparecomp);Requires:Theelementseof[first,last)arepartitionedwithrespecttoth

c++ - 读取 Elf Binary 中的 GOT 条目

我想写一个小函数的跟踪器。我使用ptrace。我在ubuntux86_64上。我想找到共享库函数的地址(比如printf)。但是我有一些关于全局偏移表的问题和疑问。我有以下代码:size_tbaseAddress=this->getBaseAddress();Elf_Ehdrconst*headerElf=static_cast(this->_manager.readMemory((void*)baseAddress,sizeof(Elf_Ehdr)));Elf_Phdrconst*headerProgram=static_cast(this->_manager.readMemory(

c++ - 更改 boost::property_tree 读取将字符串转换为 bool 值的方式

我迷失在boostproperty_tree的头文件中,并且由于缺乏关于较低层的文档,我决定询问有什么简单的方法可以覆盖流转换器以更改bool值的方式被解析。问题是在属性树的输入端,有用户,他们可以修改配置文件。可以通过多种方式指定bool值,例如:dosomething.enabled=truedosomething.enabled=trUEdosomething.enabled=yesdosomething.enabled=ONdosomething.enabled=1默认行为是检查0或1,然后使用std::ios_base::boolalpha让流尝试以适合当前语言环境的方式解析

c++ - 井字游戏 AI : How to Make the Tree?

在制作井字游戏机器人时,我在试图理解“树”时遇到了很大的困难。我理解这个概念,但我不知道如何实现它们。有人可以向我展示一个如何为这种情况生成树的示例吗?还是生成树的好教程?我想困难的部分是生成部分树。我知道如何实现生成一整棵树,但不知道它的一部分。 最佳答案 想象一下,在井字游戏中的任何一点,每一个可能的Action都是一个分支。板的当前状态是根。一个Action是一个分支。现在假设(一次一个),每个分支都成为当前状态。每个可能的移动都成为一个新的分支。树的叶子是当最后一步完成并且棋盘已满时。你需要一棵树的原因是,一旦它建成,你需要

c++ - Boost Property_Tree 迭代器,如何处理它们?

很抱歉,我之前问过一个关于同一主题的问题,但我的问题涉及那里描述的另一个方面(Howtoiterateaboost...)。看看下面的代码:#include#include#include#include#includeintmain(intargc,char**argv){usingboost::property_tree::ptree;ptreept;read_xml("try.xml",pt);ptree::const_iteratorend=pt.end();for(ptree::const_iteratorit=pt.begin();it!=end;it++)std::cou

c++ - 在 Windows 上用 C++ 执行相当于 "Kill Process Tree"的操作

我们有一个C++任务将派生一个新进程。该进程又可能有几个子进程。如果任务运行超过了分配的时间,我们将要终止该fork进程。但是,我们不想孤立它产生的进程。我们希望他们都死去。我使用了ProcessExplorer,它有一个“KillProcessTree”选项,类似于Windows任务管理器的“EndProcessTree”,所以我猜测/假设有一个公共(public)API可以做到这一点。有没有人这样做过,或者知道对这样做的公共(public)API的引用? 最佳答案 您可能需要考虑“JobsAPI”。CreateJobObject

c++ - 为什么 std::binary_search 的参数是前向迭代器?

在阅读http://en.cppreference.com/w/cpp/algorithm/binary_search时我注意到它将转发迭代器作为参数。现在我很困惑,因为我认为它宁愿是一个随机访问迭代器,所以二进制搜索实际上是二进制的。为了满足我的好奇心,我写了一个小程序:#include#include#include#include#include#include#include#includeintmain(){std::uniform_int_distributionuintdistr(-4000000,4000000);std::mt19937twister(std::chr

c++ - 使用 ios::binary 或 ios::out 或两者打开文件有什么区别?

我正在尝试找出打开文件之间的区别:fstream*fileName*("FILE.dat",ios::binary);或fstream*fileName*("FILE.dat",ios::out);或fstream*fileName*("FILE.dat",ios::binary|ios::out);我发现所有这些形式都是相同的:在所有情况下,文件上的相同输出都是使用*fileName*生成的。或*fileName*.write(). 最佳答案 ios::out打开文件进行写入。ios::binary确保数据被读取或写入,而无需在运

c++ - 替换 std::binary_function

std::binary_function现已弃用,将在c++17中删除.我搜索了不同的出版物,但我找不到替换它的确切方法。我想知道我应该如何在c++11中编写以下代码风格。templateinlineTabsolute(constT&x){return(x>=0)?x:-x;}templatestructabsoluteLess:publicstd::binary_function{booloperator()(constT&x,constT&y)const{returnabsolute(x)structabsoluteGreater:publicstd::binary_functio

c++ - 错误 C2679 : binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

这是我的代码,我该如何解决这个错误?#include"stdafx.h"#includeusingnamespacestd;intmain(){stringtitle="THEWORLDOFPIRATES";cout错误是binary' 最佳答案 你忘了#include使用std::string不包括它的header适用于一些间接导入部分的编译器进入他们的或其他标题,但这不是标准的,不应依赖。此外,当您尝试输出字符串时,它们通常会中断,因为它们仅包含实现的一部分,并且缺少实现operator的部分。.