草庐IT

insert-if-non-existent

全部标签

c++ - 旧版本的 C++ 在评估 `int` 语句中的条件时是否使用了类的 `if()` 运算符?

现代版本的C++在评估if()语句中的条件时尝试使用类的bool运算符。其他转换运算符,例如int在不存在bool运算符时使用。如下所示。#includeusingnamespacestd;classTwoInts{public:inta,b;operatorbool(){cout运行这段代码不会产生任何意外:TwoIntstoboolSixIntstoint查看一些旧的C++代码,似乎有一个更改需要验证。旧版本的C++在评估if()语句中的条件时是否使用了类的int运算符?什么版本(如果有)做过某事?那么建议的输出应该是TwoIntstointSixIntstoint关于问题原因的一

C++ : Check if the template type is one of the variadic template types

这个问题在这里已经有了答案:Checkifatypeispassedinvariadictemplateparameterpack(3个答案)关闭7年前。假设我们有函数:templatevoidfoo(){...};检查“Kind”类型是否是C++(包括C++1z)中的“Kinds”类型之一的最简单方法是什么?

c++ - 如何解决模板参数推导中的 const/non-const 冲突

我有一个接受std::pair的函数模板以及其中一种类型的值。我想使用来自std::map的条目调用此函数作为对参数。#include#includetemplatevoiddo_stuff(std::pairconst&pair,T1const&val){//Imaginethatthisdoessomethingimportant...}intmain(){std::mapfoo{{0,0.0}};do_stuff(*foo.begin(),0);}编译失败,因为map条目的类型是std::pair,所以T1的类型推导有冲突的类型:constint通过pair参数,和int通过va

支持 Scott Meyer 建议的 C++ IDE : Prefer non-member non-friend functions over members

ScottMeyer关于非成员函数增加封装并允许更优雅的设计(设计方面)的论点对我来说似乎非常有效。看这里:Article但是我对此有疑问。(似乎还有其他人,尤其是库开发人员,他们通常完全忽略这一点)当我使用成员函数时,代码通常看起来更好、更合乎逻辑。不过,这可能是一种后天习得的品味,只是需要一些时间来习惯先查看算法,然后再查看对象。(颤抖)所以也许我只有一个问题:有了成员函数,我和我的IDE就知道类可以做什么。对我来说,这是巨大的!我使用任何不支持成员函数代码完成的东西来编程。在设计良好的库中,它完全取代了我的文档。即使我会查看api文档,浏览成员列表也感觉绝对自然、合乎逻辑,我可以

c++ - 迭代而不产生 IF 语句的成本

我的问题是出于好奇,而不是是否有其他方法可以解决这个问题。这是一个奇怪/有趣的问题,所以请以开放的心态阅读它。让我们假设有一个游戏循环每帧都被调用。游戏循环依次通过无数的if语句调用多个函数。例如,如果用户将GUI设置为false,则不要刷新GUI,否则调用RefreshGui()。循环中还有许多其他if语句,如果它们为真,它们将调用各自的函数。有些是if/if-else.../else,在最坏的情况下成本更高。即使被调用的函数,如果if语句为真,也有逻辑。如果用户想要对所有对象进行光线拾取调用FunctionA(),如果用户想要对灯光进行光线拾取,则调用FunctionB(),...

c++ - 在集合中使用 find_if

在我的main.cpp中:usingnamespacestd;#include#include#include#include#include#include#includeclassfindme{public:booloperator()(conststd::string&s){returns=="tom";}};intmain(intargc,char*argv[]){setmyset;myset.insert("tom");myset.insert("jerry");cout::iteratorit;if(find_if(myset.begin(),myset.end(),fin

c++ - 语句 "a class is an object even if not instantiated"是什么意思?

我是一名学习Ruby的C++程序员。在一本初学者书中,我读到:“一个类本身就是一个对象,即使您不直接实例化它也是如此。”我不知道怎么解释。 最佳答案 在C++中,除了typeid等,类没有语言可见的运行时表示。你可以说classFoo{};,但你不能说&Foo。(您可以获取typeinfo对象的typeid/地址,它是类对象的SCSS版本)。在Ruby中,类是对象。任何你能用一个对象做的事情,你都可以用一个类来做,因为它是一个对象。例如,在Ruby中,您可以foo.send(...)到任何对象foo。由于类是一个对象,因此您也可以使

c++ - std::map.insert "could not deduce template argument for..."

我正在尝试熟悉STL库,但我无法理解我的编译错误。我使用编译器错误字符串“无法推断...的模板参数”搜索了其他问题,但没有一个答案似乎适用或相关。Error4errorC2784:'boolstd::operator&,conststd::unique_ptr&)':couldnotdeducetemplateargumentfor'conststd::unique_ptr&'from'conststd::string'c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\xfunctional125我正在编写一个简单的解释

c++ - 释放内存的时候一定要用IF语句吗?

这个问题在这里已经有了答案:IsitsafetodeleteaNULLpointer?(8个答案)关闭9年前。我正在尝试理解C++中的内存部分。在使用下面的代码生成输出后,我试图释放内存。问题:是否需要通过if语句释放内存?代码:intmain(){char*pc;int*pi;pc=newchar('a');pi=newint(8);cout我可以这样做吗?内部主要(){字符*个人计算机;整数*pi;pc=newchar('a');pi=newint(8);cout

c++ - 带有复制构造函数的 enable_if

我第一次尝试std::enable_if并且很挣扎。任何指导将不胜感激。作为玩具示例,这是一个简单的静态vector类,我想为其定义一个复制构造函数,但行为取决于vector的相对大小:只需将数据复制到更小或相同大小的vector中将数据复制到一个更大的vector中,然后用零填充其余部分所以vector类是:templateclassVector{double_data[_Size];public:Vector(){std::fill(_data,_data+_Size,0.0);}constdouble*data()const{return_data;}//...};复制构造函数应