根据运营商新的参考条目( http://www.cplusplus.com/reference/std/new/operator%20new/ ): 全局dynamic存储操作符函数在标准库中是特殊的: operator new的所有三个版本都在全局命名空间中声明,而不是在std命名空间中声明。 第一个和第二个版本在C ++程序的每个翻译单元中都是隐含声明的:不需要包含它的头文件。 这似乎意味着,在C ++程序的每个翻译单元中,隐含地声明了operator new(placement new)的第三个版本,并且需要包含头<new>以使其存在。 那是对的吗? 如果是这样,那么如何使用g ++和MS VC ++ Express编译器,似乎我可以在我的源代码中使用没有#include <new>的第三版本编译代码? 此外,operator new上的MSDN Standard C ++库引用条目给出了包含#include <new>语句的operator new的三种forms的一些示例代码,但是,如果没有这个包含,那么该示例似乎编译和运行也是一样的? // new_op_new.cpp // compile with: /EHsc #include<new> #include<iostream> using namespace std; class MyClass { public: MyClass( ) { cout << "Construction MyClass." << this << endl; }; ~MyClass( ) […]
template<typename InputIterator, typename Predicate> inline InputIterator find_if(InputIterator first, InputIterator last, Predicate pred, input_iterator_tag) { while (first != last && !bool(pred(*first))) ++first; return first; } 我碰到了GCC 4.7.0附带的C ++标准库实现源代码片段 。 这是一个input迭代器的find_if的特化。 我清除了主要的下划线,使其更具可读性。 为什么他们在谓词上使用boolexpression式?
我有两个邮政编码char* ,我想比较,忽略大小写。 有这样的function吗? 或者我必须循环使用tolower函数,然后进行比较? 任何想法如何将这个函数与string中的数字反应 谢谢
我读过很多伪随机数生成器需要许多样例才能被“预热”。 这是什么时候使用std :: random_device种子std :: mt19937,或者我们可以期望它已经准备好后,build设? 有问题的代码: #include <random> std::random_device rd; std::mt19937 gen(rd());
在cout,cin,cerr和clog名字中,“c”是什么意思? 我会说char但我还没有find任何证实。
我如何检查Perl模块是否是核心的一部分 – 也就是说它是标准安装的一部分? 我在找: 一个命令行命令: 一个Perl子程序/函数在代码中检查 也许这个问题应该是:我怎么知道在一台机器上最初提供了什么模块与特定的 Perl安装? (实际上,现在被问到如何告诉在一台机器上最初提供了什么模块的Perl特定安装? ) 鉴于现在似乎没有一个完整的Perl标准安装,至less这个新问题的答案会告诉我什么,我最初安装时,它是在第一次安装。 有了这些知识,如果我保留原始的安装程序映像/包或知道如何再次在网上得到确切的东西,那么我有一个可重复的Perl安装几台机器知道什么模块将出席,什么模块不会。 为了进一步阐明:我正在查看最初安装的内容,提供了哪些模块作为安装的一部分,以及内置内容。 不是从那以后安装的。 我希望能够在安装的机器上执行此操作 。 所以为此,我将依靠安装来以某种formslogging原来的内容。 我问了一个分拆的问题: 我怎么知道在一台机器上最初提供了什么模块的特定Perl安装? (我怎么知道在一台机器上最初提供了什么模块的Perl特定安装?)
我有一个16字节的数组,其中包含可执行文件段的名称。 char segname[16]; 如果段名长度小于16个字节,则其余部分填充空字节。 否则,没有终止的空字节。 我想比较segname各种string,例如__text 。 用非空终止的string调用strncmp是否合法? 这篇文章假定它是合法的。 这个源代码也是合法的。 但是我的男人的页面说: strncmp()函数按strncmp()顺序比较以空字符结尾的strings1和s2 。 传递给strncmp的大小将是segname的大小。 我想知道我应该参考什么。
考虑面向对象的语言: 大多数来自面向对象编程背景的人都熟悉各种语言中常见的直观界面,这些界面捕捉了Java Collection & List界面的精髓。 Collection是指不一定具有自然顺序/索引的对象的集合。 List是一个具有自然顺序/索引的集合。 这些接口抽象了Java中的许多库数据结构,就像他们在其他语言中的等价接口一样,并且需要对这些接口有一个深入的了解才能与大多数库数据结构有效地协作。 过渡到Haskell: Haskell有一个types类系统,类似于对象上的接口types。 Haskell似乎有一个关于Functors,Applicative,Monads等devise良好的types层次结构 。 他们显然需要正确和抽象的types 。 然而,当你看到许多Haskell的容器( List , Map , Sequence , Set , Vector )时,它们几乎都具有非常相似的(或相同的)function,但不是通过types类来抽象的。 一些例子: null用于testing“ null ” 元素数量的length / size elem / member列入集合 empty 和/或 singleton默认构造 union联盟 (\\) / diff设置差异 (!) / (!!)进行不安全的索引(部分function) (!?) / lookup安全索引(总function) 如果我想使用上面的任何函数,但是我导入了两个或多个容器,我必须从导入的模块中隐藏函数,或者只从模块导入必要的函数,或者限定导入的模块。 但是因为所有的function都提供了相同的逻辑function,所以看起来就像一个麻烦。 如果函数是从types类定义的,而不是在每个模块中单独定义的,那么编译器的types推断机制就可以解决这个问题。 只要他们共享types类(例如:让我们只使用Sequence而不是List来获得更好的随机访问效率),它也会使底层容器的切换变得简单。 为什么Haskell没有一个Collection和/或Indexabletypes的类来统一和概括这些函数呢?
编辑:我在这里问了一个相反的问题: 如何embeddedPython3与标准库 这里提供了一个Python2的解决scheme: 是否可以在没有标准库的情况下embeddedpython? 但是,Python3在Py_Initialize();上失败Py_Initialize(); 有: Fatal Python error: Py_Initialize: unable to load the file system codec ImportError: No module named 'encodings' 这是有道理的,因为py3源文件默认是utf-8。 所以它似乎只需要一个外部的二进制文件来parsingpy3源文件。 那么该怎么办? 它看起来好像我需要在我的系统Python安装中findencodings二进制文件,将其复制到我的项目树中,并设置一些环境variablesPYTHONPATH(?)以便我的libpython.dylib可以find它。 是否有可能避免这种情况? 如果没有,任何人都可以澄清我需要采取的步骤? 会不会有更多的打嗝? 注:对于后代,这是我得到一个独立的libpython.dylib链接到我的项目在OSX上: 首先我find我的系统Python的库: /usr/local/Frameworks/Python.framework/Versions/3.4/Python (在我的情况下,它是用自制软件安装的)。 现在我: 将.dylib复制到我的项目文件夹中创build./Libs/libpython3.4.1_OSX.dylib 进入生成build settings -> linking并将other linker flags设置为-lpython3.4.1_OSX 在这一点上,它似乎工作。 但是,如果您知道尝试在新的OSX安装上构build它,它将会失败。 这是因为: $ otool -D ./libpython3.4.1_OSX.dylib ./libpython3.4.1_OSX.dylib: /usr/local/Frameworks/Python.framework/Versions/3.4/Python .dylib仍然保留在旧的位置。 .dylib包含一个指向它的位置的链接真的很奇怪,因为使用它的任何东西都必须知道它在哪里以便首先调用它。 我们可以纠正这个: $ install_name_tool […]
我被“C标准lib”和“C POSIX lib”弄糊涂了,因为我发现“C POSIX lib”中定义的许多头文件也是“C标准库”的一部分。 所以,我假设“C标准库”是由ANSI C组织定义的一个库,在不同平台(Win32 / Unix-like)上有不同的实现,而“C POSIX库”只是“C标准lib“在类似Unix的操作系统上,对吗? 但是“C POSIX lib”包含了一些未在“C标准库”中指定的头文件,如<sys/types.h> , <sys/wait.h>和<pthread.h> 。 以<pthread.h>为例,我假定它的“C标准库”对应是<threads.h> ,那么如果我想在Linux上编写一个multithreading程序,我应该包含哪个头文件<pthread.h>或<threads.h> ?