草庐IT

more_set_headers

全部标签

c++ - 警告 C4114 : same type qualifier used more than once

在将VC++6.0开发的代码迁移到VisualStudio2008时,我在代码的下面一行中收到此警告。constintconstCImportContext::PACKETSIZE=4096;我知道如何修复指针staticconstintconst*PACKETSIZE;//C4114staticconstint*constPACKETSIZE;//Correct但我的问题是如何解决这个警告,如果它像下面的警告(没有指针),staticconstintconstPACKETSIZE; 最佳答案 指针有两种不同的const限定符是有意

c++ - 如何获取字符串中的 std::set 字符作为字符串?

我有一个std::string。我想要其中的一组唯一字符,每个字符表示为std::string。我可以很容易地得到字符集:std::stringsome_string=...std::setchar_set(some_string.begin(),some_string.end());我可以将它们转换成这样的字符串:std::setstring_set;for(charc:char_set){string_set.emplace(1,c);}但是这样的做法看起来很别扭。有没有更好的(最好是标准库单行)方法来做到这一点? 最佳答案 您

c++ - set <T> vs set <T, comparator> (C++ 多态性)

为什么这段代码structThingComparator{...}staticvoidBlah(set&things){...}...setthings;Blah(things);编译失败并出现以下错误(VisualStudio2010):errorC2664:'Blah':cannotconvertparameter1from'std::set'to'std::set&'我的C++知识显然是有限的,但我希望听到喇叭声宣布多态骑士骑在他可信赖的骏马上,但我只能听到马屁和悲伤的长号:-( 最佳答案 std::set声明asfollow

c++ - 为什么在查找元素时需要使用 set.find(x) != set.end() 。

我想知道当我使用*(set.find(x))==x时出了什么问题而不是set.find(x)!=set.end()。它通常有效,但在尝试在Hackerrank上提问时(问题:link)。此代码为所有测试用例提供CA:intmain(){/*Enteryourcodehere.ReadinputfromSTDIN.PrintoutputtoSTDOUT*/sets;intn,x,y;cin>>n;while(n--){cin>>y>>x;if(y==1)s.insert(x);elseif(y==2)s.erase(x);else{set::iteratorit=s.find(x);if

c++ - C++ STL中set的 'insert'函数的原理是什么?

对于下面这段代码:intmain(){std::sets;for(inti=0;ival当符号'structNode{intval;Node(int_val=-1):val(_val){}booloperatorp.val;}};当我把函数改成这样时:booloperator=p.val;}输出变为:'5443210'。差异让我感到困惑,有人可以解释为什么会发生这种情况并解释“插入”功能的原理吗? 最佳答案 std::set使用operator默认情况下在key类型上,因此在第一种情况下,它使用operator为Node定义比较键,

c++ - 什么是 "exotic character sets"?

我正在看一个c++文档,上面是这样说的,Widecharactersareusedmainlytorepresentnon-Englishorexoticcharactersets.外来字符集的确切含义是什么? 最佳答案 我认为它没有“技术”意义,它被用作“奇怪”或“不寻常”的字符集。既然我们在谈论宽字符,一般来说我们实际上是在谈论Unicode;我会说Cuneiform或Klingon1可被视为“外来字符集”。甚至那些Unicodeblock不是用于语言,而是用于各种性质的符号(mathematicalsymbols、arrows

c++ - 读取PNG header 的宽度和高度

我正在尝试读取PNG文件的宽度和高度。这是我的代码:structTImageSize{intwidth;intheight;};boolgetPngSize(constchar*fileName,TImageSize&is){std::ifstreamfile(fileName,std::ios_base::binary|std::ios_base::in);if(!file.is_open()||!file){file.close();returnfalse;}//SkipPNGfilesignaturefile.seekg(9,std::ios_base::cur);//First

c++ - 函数原型(prototype) vs 在 cpp 中包含 header

我有做一些工作的功能。啊啊voiddoSomething(intn);A.cpp#include"A.h"voiddoSomething(intn){/*something*/}如果我想在另一个源文件中使用这个函数,最好的选择是什么:1)包含A.hB.cpp#include"A.h"voidanotherTask(){//...doSomething(5);//...}2)或使用前向声明(函数原型(prototype)):B.cppvoiddoSomething(int);voidanotherTask(){//...doSomething(5);//...}关于尽可能多地为类使用前向

c++ - 如何优雅地将所有枚举放入 std::set

我有一个枚举,我想将它们全部放入集合中(然后使用set_intersection算法删除一些,但这是题外话)。除了我卡在第1步之外,一切都很好。:)如果我有(真实类具有更高基数的枚举)classMyClass{enumColor{red,green,blue}};我将如何初始化std::set包含所有枚举。我显然可以一个接一个地手动插入它们,做一个带强制转换的for循环,因为它们是连续的并且从0开始(我认为如果我不在枚举定义中使用=则这是必需的),但我正在寻找一种更优雅的方式。编辑:如果可能的话,我更喜欢C++03解决方案,因为当前的问题实例需要它,但如果不是,C++11也很好知道。

c++ - C++ 中的 header 保护问题

刚开始自己​​写header,但迫于需要,必须学习一下。我正在写一个标题,我正在尝试理解标题保护。包含的头文件前后有一个或两个下划线有区别吗?举个例子:x.h//x.h#ifndef__X_H_INCLUDED__#define__X_H_INCLUDED__//functionsnstuff#endif对比://x.h#ifndef_X_H_INCLUDED_#define_X_H_INCLUDED_//functionsnstuff#endif一个比另一个更正确还是更不正确?有区别吗? 最佳答案 根据C++1117.6.4.3.