草庐IT

c++ - 如何确定更大类型的 decltype 表达式

假设我有这样一个函数:staticconstboost::int32_tSOME_CONST_VALUE=1073741823;templatetargetTypeConvert(sourceTypesource){typedefdecltype(source*SOME_CONST_VALUE)MulType_t;//typedefboost::int64_tMulType_t;MulType_tval=(MulType_t)source*(MulType_t)SOME_CONST_VALUE;returnval/(MulType_t)SOME_CONST_VALUE;}当我这样调用这

c++ - 未初始化变量的值是如何确定的?

给定一个程序:intmain(){shortmyVariableName1;//storesfrom-32768to+32767shortintmyVariableName2;//storesfrom-32768to+32767signedshortmyVariableName3;//storesfrom-32768to+32767signedshortintmyVariableName4;//storesfrom-32768to+32767unsignedshortmyVariableName5;//storesfrom0to+65535unsignedshortintmyVaria

c++ - 大小在运行时确定的数组,这在 C++ 中有效吗?

所以我和我的friend聊天,帮她写了一段代码,我一直认为数组需要是编译时常量,因为它们在堆栈上。但她说她的friend用这段代码做到了这一点:#include#includeintmain(){intvalue='';intsum=0;intcount=0;cout>value;intnumbers[value];cout>numbers[k];}}他们正在使用Dev-C++。这段代码应该有效吗?我想不会。 最佳答案 可变长度数组是gcc和g++的扩展……所以这并不是在每个编译器中都有效。有关gcc对可变长度数组的支持的更多信息,

c++ - 如何在运行时确定您的 C++ 应用程序何时附加了 visual studio 调试器?

您如何在运行时确定visualstudio调试器是否附加到您的进程。我已经看到有关如何在.NET中执行此操作的说明,但我的进程是nativeC++进程。支持检测即时调试会很好,但不是严格要求。 最佳答案 Win32调用IsDebuggerPresent()听起来应该可行。 关于c++-如何在运行时确定您的C++应用程序何时附加了visualstudio调试器?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.

c++ - 如何使用 Qt 确定我的互联网 IP 是否属于给定的 IP 列表

我在TXT文件中存储了以下IP列表(CIDR格式):58.200.0.0/13202.115.0.0/16121.48.0.0/15219.224.128.0/18...但是我不知道如何确定我的IP是否属于这个列表。我在Windows平台上使用QtC++框架。 最佳答案 首先,您需要将每个CIDR表示法范围分解为网络(带点的IP地址)部分和一些位。使用此位数生成掩码。然后,你只需要测试是否(range&mask)==(your_ip&mask),就像您的操作系统一样:一些伪C代码:my_ip=inet_addr(my_ip_str)

c++ - 确定字符是否属于一组已知字符的最快方法 C++

给定任何字符,确定该字符是否属于已知字符集(而非容器类型)的最快方法是什么。换句话说,什么是实现条件的最快优雅的方式:charc='a';if(c==ch1||c==ch2||c==ch3...)//做点什么...是否有一个STL容器(我想它可能是unordered_set?),我可以将字符作为键传递给它,如果键存在它会返回true吗?任何具有O(1)查找时间的东西都适合我。 最佳答案 我走得更远,写了两个版本,一个基于查找数组,另一个基于使用底层哈希的集合。classCharLookup{public:CharLookup(con

c++ - 确定 C++ 中包含文件的编译时存在

我正在尝试编写一些可移植的C++库代码,这些代码最初将依赖于Boost.Regex,然后在编译器支持时转移到TR1,并在从std转移后最终转移到C++0x规范::tr1命名空间到标准。下面是我想用预处理器做的一些伪代码:if(exists(regex))//checkifIcan#include{#include//perTR1if(is_namespace(std::tr1))//areweonTR1orC++0x?{usingstd::tr1::regex;}else{usingstd::regex;}}else//fall-backtoboost{#includeusingboo

c++ - 如何确定 C++ 对象是否已被释放?

我有一个previousquestion我在其中描述了当我尝试访问已被第三方函数释放的对象时捕获异常的困难。该函数有时会释放对象,有时不会释放对象。为了避免必须使用try/catchblock来捕获上一个问题中描述的SEH异常,我需要能够判断对象是否已被释放。我如何确定一个C++对象是否已被释放或仍然是一个有效的指针? 最佳答案 您不能仅通过查看内存位置就可以轻易判断该对象是否仍处于分配状态。可能有一些黑魔法可以做到这一点,但更简洁的方法是在对象的析构函数中构建回调机制。 关于c++-如

排序程序不起作用,不确定为什么

voidsort(intvalues[],intn){intsmallestSpot=0;for(longlongi=0;i我的排序算法覆盖了第一个数字是什么,我找不到原因,请提供帮助。谢谢。看答案感谢Coldspeed和GaurangVyas通过表演,我们可以实现对代码的工作版本。代码#includevoidsort(intvalues[],intn){intsmallestSpot=0;for(longlongi=0;i在尝试编码算法之前,请使用笔和纸跟踪您的算法。我建议您看到许多分类算法这个链接并获得有关分类问题和解决方法的视觉理解。编辑显示输出

c++ - 确定所有由 g++ 内联的函数调用

这个问题在这里已经有了答案:Howwilliknowwhetherinlinefunctionisactuallyreplacedattheplacewhereitiscalledornot?(10个答案)关闭8年前。我正在尝试诊断一个奇怪的性能问题,我认为它与GCC未能在C++中内联某些函数调用有关,但我不确定是哪个函数调用。GCC是否有一个标志来列出执行内联的所有行号?