草庐IT

const_set

全部标签

c++ - 从 const string 到 bool 的隐式转换

这个问题在这里已经有了答案:WhyisthereanimplicittypeconversionfrompointerstoboolinC++?(3个答案)关闭5年前。我有以下代码:#include#includevoidfoo(boola){std::cout执行时我得到这个输出:bool我期望的输出是:string为什么g++4.9将此字符串隐式转换为bool?

c++ - Static Cast 访问静态 const 类成员

这个问题在这里已经有了答案:Undefinedreferencetostaticconstint(9个回答)关闭5年前。所以昨天我正在寻找SO,但找不到以下问题的答案。这种情况来self正在使用的一些代码,但这里是MCVE来演示它。我在A.h中定义了一个类A,其中只有一个静态常量。我已经在标题中对其进行了初始化。#ifndefA_H_#defineA_H_classA{public:staticconstinttest=5;~A(){};};#endif/*A_H_*/然后我有一个B类需要从A类访问publicstaticconst。在这个例子中,它将把值深度复制到一个vector中。

c++ - set::vector 初始化用数字引号

所以我想到了一个关于std::reduce的问题,这让我想到了一个例子。cppreference.com在这个例子中,我看到了以下std::vector声明:std::vectorv(10'000'007,0.5);这些引用在这里做什么?我以前从未在任何地方见过这个。这是我应该了解的一种新型C++功能吗? 最佳答案 这是C++14的新特性。来自cppreference:Optionalsinglequotes(')maybeinsertedbetweenthedigitsasaseparator.Theyareignoredbyth

c++ - 二进制表达式 ('const char*' 和 'const char *' 的无效操作数)

这个问题在这里已经有了答案:Can'taddstringsinC++(7个答案)关闭4年前。我想用简单的语言知道这个错误的原因。#include#includeintmain(){std::stringexclam="!";std::stringmessage="Hello"+",world"+exclam;std::couttest.cpp:55:35:error:invalidoperandstobinaryexpression('constchar*'and'constchar*')std::stringmessage="Hello"+",world"+exclam;

c++ - 'const' 关键字是如何工作的?

使用const可以防止变量被更改。很容易。constintx=5;x=6;//notallowed!但这实际上是如何实现的呢?它只是一个编译器规则吗?还是在机器代码级别发生了一些事情,区分了const和非常量变量?编辑:我的问题不同于this因为那个问题只是询问编译器如何跟踪什么是const什么不是。我的问题不是这个。我的问题是关于const的实际机器代码级含义,如果有的话(似乎它可能只是一个编译器提示)。无论如何,只要看看我的问题的答案和链接问题的答案有何不同不同。这应该会提示您这不是重复的。编辑:关于在派生类中访问成员的“重复”问题不是重复的。不同的问题,不同的答案。

c++ - 为什么文字不是 const(字符串除外)?

文字通常是prvalue。字符串是一种特殊情况,定义为char数组(意思是lvalue)。这个问题专门针对非字符串文字。为什么非字符串文字不是const?foo(42);//passesfooan`int`,nota`constint`.您不能修改非字符串字面量,所以它不是const吗? 最佳答案 文字答案可能是因为文字早于const添加到语言中,所以它们自然不是const。但实际的答案是-const纯右值从根本上来说是很奇怪的东西。您不能从任何基本类型创建它们,但您可以拥有类类型的const纯右值。但为什么?通常,我们将事物设为c

c++ - 构造指针类型的 std::set 是否有效?

我想将一些指针存储到std::set中,但标准指南说它是无效的。Iftwopointerspandqofthesametypepointtodifferentobjectsthatare>notmembersofthesameobjectorelementsofthesamearrayortodifferent>functions,orifonlyoneofthemisnull,theresultsofpq,pp>=qareunspecified.看起来运算符不受朴素指针类型的支持,如下所示。Object*a=newObject;Object*b=newObject;a==b;//va

c++ - 类型 "const char *"的值不能分配给类型 "LPSTR"的实体

这个问题可能已经有了答案,但我觉得我需要问这个问题,因为我似乎无法获得代码在VSCommunity2017上按预期工作所需的答案,因为它有效在VSExpressEdition上表现良好。我正在尝试实现从c项目中获取的代码,但我看不出如何解决该错误:Valueoftype"constchar*"cannotbeassignedtoanentityoftype"LPSTR"和cannotconvertfrom'constchar[7]'to'LPSTR'MENUITEMINFOmii={0};mii.cbSize=sizeof(MENUITEMINFO);mii.fMask=MIIM_TY

c++ - 填充 unordered_set 的更有效方法?

我有一个连续存储在内存中的整数数组,我想将它们全部添加到unordered_set集合中。现在,我一次添加一个。for(inti=0;i有什么方法可以更有效地做到这一点?我意识到项目在集合中不是连续存储的,所以它不会像将数组交给集合那样简单。但这可以以某种方式优化吗? 最佳答案 unordered_set有一个构造函数,它接受一系列元素来初始添加它们:templateunordered_set(InputItfirst,InputItlast,size_typebucket_count=/*implementation-define

c++ - 在 C++ 中比较 buffer 和 const char*

将内存缓冲区与常量字符串进行比较的正确C++方法是什么-strcmp(buf,"sometext")?我想避免由于创建临时std::string对象而导致不必要的内存复制。谢谢。 最佳答案 如果您只是检查相等性,您可以使用std::equal#includeconstchar*text="sometext";constintlen=8;//lengthoftextif(std::equal(text,text+len,buf))...当然,如果您的缓冲区可以小于文本,这将需要额外的逻辑