草庐IT

it_begin

全部标签

c++ - 获取 c 数组上 begin 的返回类型

我想获得std::begin的返回类型以一种通用的方式。我目前的解决方案是:usingtype=decltype(std::begin(std::declval()));它在T=std::vector时有效.但我不明白为什么以下内容不起作用:usingtype=decltype(std::begin(std::declval()));我得到错误:example.cpp:83:60:error:nomatchingfunctionforcallto‘begin(int[3])’usingtype=decltype(std::begin(std::declval()));如何获取std::

c++ - 为什么 mySet.erase(it++) 不是未定义的行为,或者是吗?

协议(protocol)tothisquitehighlyupvotedanswer,遍历集合并删除一些元素的规范方法如下:for(it=mySet.begin();it!=mySet.end();){if(conditionToDelete(*it)){mySet.erase(it++);}else{++it;}}当然,这是C++03的seterase没有返回迭代器的结果。否则可以这样写it=mySet.erase(it);显然也可以这样写itToDelete=it++;mySet.erase(itToDelete);这个问题不是关于如何在迭代时删除元素。问题是为什么下面这行显然不会

c++ - 编译器错误 "character constant too long for its type"。怎么了?

我有一些我正在尝试处理的代码...#include#includeintmain(){std::cout";std::stringchoice;std::getline(cin,choice);if(choice=='hamburger'||choice=='Hamburger'){std::cout";std::stringopt;std::getline(cin,opt);if(opt=='y'||opt=='Y'||opt=='yes'||opt='Yes'){std::cout这是改编self编写的Bash脚本,是我的第一个C++程序之一。当我编译它时,它出现了这些错误...t

c++ - 网络游戏作弊: Is it possible to prevent one Win32 process from inspecting/manipulating another's memory?

我玩在线游戏《魔兽世界》,该游戏受到自动机器人的困扰,这些机器人检查游戏的分配内存以读取游戏/玩家/世界状态信息,这些信息用于机械地玩游戏。他们有时也会直接写入游戏的内存本身,但据我所知,更复杂的不会。该游戏的供应商BlizzardEntertainment有一个名为Warden的单独应用程序,它应该可以检测和禁用类似的黑客和作弊行为,但它并不能捕获所有内容。是否可以制作一个Windows应用程序,让您是唯一一个可以将您读入内存的内容读入内存的应用程序?在数百万台机器上运行的大型C++应用程序上实现这种做法是否实用? 最佳答案 做不

c++ - VS2015 更新 1 个错误,或错误的 C++ : Why can't a friend class access its friend's protected destructor?

以下似乎是ZeroCICE在其自动生成的代码中采用的一种模式,在我看来,这似乎是他们现在为其工具的许多版本制作单例(不确定为什么)的一种方式。各种编译器都没有问题,直到今天发现VisualStudio2015Update1(VS版本14.0.24720.00,VC++版本19.00.23506)报错。在Update1之前,VS2015也没有问题。我不确定它是带有Update1的VS2015C++编译器中的错误(回归?),还是其他编译器放任自流的错误(不符合标准)C++代码。这是代码模式的示例:classFoo{protected:virtual~Foo(){}friendclassFo

c++ - 使用 libc++ 正则表达式库 (C++11) 匹配 "beginning-of-line"

我想匹配以给定单词开头的所有行,比如iheap。如果我没记错的话,正则表达式(在ECMAScript语法中)"^iheap.*"应该可以解决问题。但是,当我使用libc++的正则表达式库在C++11中对此进行测试时,只有第一行匹配。所以"^..."似乎只匹配输入的开头而不是行的开头。这是一个例子:#include#include#includeusingnamespacestd;intmain(){regexrx("^iheap.*");strings="iheapsayshello.\niheapsayshelloagain.\n";cout输出:iheapsayshello.ihe

c++ - 为什么 vector.begin() 可能不等于 &vector[0]?

在这里http://www.parashift.com/c++-faq/vector-is-contiguous.html说明vector.begin()可能不等于&vector[0]。为什么要这样定义。是什么阻止了vector.begin()等于&vector[0]? 最佳答案 vector的迭代器可以定义为某个类。由于成员函数返回迭代器,因此它不必是指向数组第一个元素的原始指针。它可以是该类的对象。只需要迭代器定义operator*即可返回对vector第一个元素的引用,前提是vector不为空。

c++ - 单个语句中的多个复合赋值 : is it Undefined Behavior or not?

我找不到明确的答案:以下代码是否有未定义的行为?intx=2;x+=x+=x+=2.5; 最佳答案 行为未定义。让我们看一下稍微简单一点的表达式:x+=(x+=1)在C++11中,左边的x的值计算相对于表达式(x+=1)的值计算是无序的。这意味着x的值计算相对于x的赋值是无序的(由于x+=1),因此行为未定义.这样做的原因是+=运算符两侧的值计算相对于彼此是无序的(因为标准没有另外指定)。1.9p15指出:Ifasideeffectonascalarobjectisunsequencedrelativetoeitheranother

C# 控制台日志记录 : will it have memory issues?

所以我正在使用一个控制台应用程序,它一次可以持续数天、数周或数月。它将有用的信息记录到文本文件中,但它也会写入控制台。我是否需要担心控制台内存由于某种原因没有被清除?好像还可以。我写了一个小测试来运行午餐。我添加了一些随机间隔的字母,以便我的同事认为我一定是在处理一些大东西并且可以吃更长的午餐。for(Int64i=0;i因此,内存在不写入文件的情况下看起来很稳定。我只是想确认一下,如果我确实有内存问题,那不是来自控制台...如果我也将其记录到文本文件中,内存确实会略有增加。 最佳答案 Itlogsusefulinformation

windows - 编程虚拟第二个监视器驱动程序 : where to begin?

有一个iPad应用程序叫AirDisplay它将您的iPad变成计算机的无线第二台显示器。我没有亲自尝试过,所以我不能保证它的有效性,我认为它有很大的滞后,但我认为将一些东西扔到iPad屏幕上作为引用,然后在你的屏幕上工作会非常有用笔记本电脑屏幕。例如,如果你正在写一篇研究论文,你可以在浏览器中找到一些有用的东西,然后把它扔到iPad屏幕上,然后在主屏幕上输入Word。当我看到这种事情时,我想知道他们是如何实现的。对于Windows7,我从哪里开始学习这个?我有一些C经验和一些C++经验,还有一点Win32经验。我猜他们必须开发某种虚拟驱动程序,诱使Windows认为连接了第二台显示器