草庐IT

const_set

全部标签

c++ - char * 和 const_cast<char*>(string.c_str()) 有什么区别

我使用外部库来处理两个应用程序之间的udp(OSC)通信。为了格式化将要发送的消息,库需要一个char*但我从UI中得到一个字符串,我必须转换它。当我处理代码的其他部分时,udp部分是硬编码的:char*endofMess="fromsetEndMess";并且工作正常。我认为使用我的字符串很容易让它工作并写道:std::strings="fromsetEndMess";char*endofMess=const_cast(s.c_str());但与第一个例子不同,我收到的消息格式正确,现在我只收到乱码。有人知道它可能来自哪里吗?谢谢!马修编辑:我使用的代码:每次OSCVal发送消息的方

c++ - 通过这样的 const 指针修改非常量指针是否合法?

考虑以下函数:voidf(intconst*p){*const_cast(id(p))=0;}假设f总是得到一个int*作为参数,这是合法的吗?我不是在问这是否是一件好事,我只是想要一个严格正式的答案。让我有点担心的是,如果你能做到这一点,优化器就会更难利用常量。考虑一个更复杂的例子://identity,alwaysreturnswhatitgetsuintptr_tid(uintptr_tp){staticunsignedintconstar[5]{0x12345678,0x87654321,0x02468ACE,0xECA86420,0x88888888};for(size_ti

c++ - 写 foo(const float&) 是在浪费精力吗?

当传递像int或float这样的原始类型时,这样写是不是浪费了精力:foo(constfloat&);而不只是按值传递:foo(float); 最佳答案 为了花车?Yes,prettymuch.这里根本没有任何好处:float很小,复制不会比创建指针来实现引用慢。 关于c++-写foo(constfloat&)是在浪费精力吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/210

c++ - unordered_map<const T, int> 和 map<const T, int> 的区别

#include#include#includeusingnamespacestd;classSolution{public:private://unordered_mapmapStrInt;//Case1:OK//unordered_mapmapStrInt;//Case2:Fail//mapmapStrInt;//Case3:OK//mapmapStrInt;//Case4:OK};问题>为什么Case2不合法?template,//unordered_map::hasherclassPred=equal_to,//unordered_map::key_equalclassAllo

c++ - std::set 需要多少额外内存(如果有的话)来存储它的元素 v.s.一个 std::vector?

它必须依赖于实现,但是使用std::set是否有任何显着的内存开销?编辑:在我的例子中,我有一组std::string,平均字符串长度为9个字母。 最佳答案 std::set被实现为二叉树,因此具有带左右指针的节点以及数据元素。这些中的每一个的分配都可以由您的动态内存库函数进行舍入。所以是的-对于一个或三个机器字的元素,开销将作为比率/百分比“显着”(例如2个64位指针+一个char可以很容易地四舍五入到例如32字节...32倍的开销),从系统/应用程序行为的角度来看可能重要也可能不重要。如果您关心,请始终在您自己的系统上进行测量。

c++ - 为什么我不能用 const_iterator 调用模板基类构造函数?

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭8年前。由于某些原因,下面的代码给出了错误Symbol'TemplateBase'couldnotberesolved.:templateclassTemplateBase{TemplateBase(std::map::const_iteratoranIterator){}};classSubClass:publicTemplateBase{SubClass(std::map::const_iteratoranIterator)

c++ - 定期使用 const_cast 作为设计工具是否可以接受?

我查看了下面的代码类型,虽然我对问题(*)有个人答案,但我希望得到C++/设计专家的评论。出于某种原因,Data是一个具有不可修改标识符和可修改值的对象:classData{constIdm_id;//设计选择变成了语言选择,因为标识符在类级别(**)被声明为const,以避免它的(意外)修改,即使是在类成员函数内部.........但是如您所见,有一个复制赋值运算符,其实现方式为:Data&Data::operator=(constData&that){if(this!=&that){const_cast(this->m_id)=that.m_id;this->m_value=tha

c++ - 如何找到应该是 const 的 C++ 函数?

我有这个代码:#includeclassA{public:intdoit(){return5;}intdoit2()const{i++;returni;}inti;};intmain(){Aa;printf("%d\n",a.doit());return0;}使用g++-Wall-Wpedanticmain.cpp可以干净地编译。有没有办法让g++说“A::doit()应该标记为const”?g++4.8有-Wsuggest-attribute=const但在这种情况下它似乎不起作用。g++-Wall-Wpedantic-Wsuggest-attribute=constconst_ma

c++ - Qt 5.4 中的 "No debugger set up"

这个问题在这里已经有了答案:QtCreator5-Nodebuggersetup(1个回答)关闭7年前。我已经安装了QtCreator(Qt5.4)。当我调试我的Qt项目时,它不会显示“未设置调试器”。现在我的电脑上已经安装了VC-2010,显然我有调试器(我验证了所有的工作)但是我是否必须为QtCreator下载另一个调试器?如何配置调试器才能工作?

c++ - 如何干净地使用:const char* 和 std::string?

tl:drHowcanIconcatenateconstchar*withstd::string,neatlyandelegantly,withoutmultiplefunctioncalls.Ideallyinonefunctioncallandhavetheoutputbeaconstchar*.Isthisimpossible,whatisanoptimumsolution?初始问题到目前为止,我在C++中遇到的最大障碍是它如何处理字符串。在我看来,在所有广泛使用的语言中,它处理字符串的能力最差。我见过其他与此类似的问题,这些问题的答案要么是“使用std::string”,要么只