草庐IT

应不应该

全部标签

c++ - 大小应该使用有符号整数还是无符号整数?

标准库vector::size()给出size_t,一个无符号数。在一次CppCon演讲中,我听到有人(是ChandlerCarruth吗?)说这很不幸,应该使用有符号整数。背景是没有为有符号整数定义溢出,因此编译器有更多的回旋余地。Carruth在一次谈话中展示了如何uint8_t作为forbzip2中的循环索引在x86上创建的机器指令比int8_t多得多因为它必须使用掩码和移位显式模拟溢出。在我现在处理的代码中,有一些严格为正的大小。这些表示为size_t.这看起来不错,因为这表明它们不能为负。另一方面,不需要定义模运算,因此只要有符号整数足够大(我们达到200),无符号整数就会为

cmake - CMakeLists.txt中应该在哪里调用find_package?

在cmake项目中包含外部库通常使用find_package()执行。但是在一个大型的多应用程序/多库项目中,一些第3方和/或系统库被多个应用程序和库使用是很典型的。这些常用库的find_package()应该在哪里调用?在每个需要它们的可执行文件/库的CMakeLists.txt文件中?或者,在顶级CMakeLists.txt文件中?第一个选项似乎是一种更加模块化的方法,但相关的find_package()脚本是为使用它们的每个库/可执行文件执行的。这会减慢配置步骤。第二个选项更有效,但对我来说看起来有点像全局变量。 最佳答案 我

c++ - 我应该对 C++ 中的非顺序常量使用枚举还是多个常量?

我正在编写从c到c++类的移植文件io函数集。“魔数(MagicNumber)”(未命名常量)比比皆是。这些函数读取一个文件头,其中包含许多特定条目,其位置当前由魔数(MagicNumber)表示。几年前,一位资深程序员告诉我,使用“魔数(MagicNumber)”本质上是邪恶的,因此,从那以后,我一直试图避免在我的端口中使用未命名的常量。所以我想创建某种存储条目的常量列表。到目前为止,我提出了两个看起来相对安全的解决方案——使用命名空间封闭的常量集或命名空间封闭的枚举。我可以安全地使用任何一种解决方案吗?一个比另一个有什么优势吗?例如选项1namespacehdr_pos{const

关于 OpenAI Sora,你所应该了解的

Hellofolks,我是Luga,今天我们继续来聊一下人工智能(AI)生态领域相关的技术-OpenAISora,本文将继续聚焦在针对OpenAISora的技术进行剖析,使得大家能够了解OpenAISora实现机制以便更好地对利用其进行应用及市场开发。在人工智能、大数据和云计算等技术迅猛发展的时代,虚拟现实、增强现实和元宇宙等新兴技术不断涌现。在这个背景下,OpenAI推出了名为"Sora"的创新力作,旨在重新定义内容创作、故事讲述以及信息共享的方式。通过基于文本到视频和视频到视频合成功能,OpenAI的Sora模型能够将文本描述转化为逼真的视频,并且能够编辑和修改现有的视频内容,生成全新的视

c++ - 为什么不推荐使用 TClientSocket 和 TServerSocket,我应该改用什么?

在经历了Eclipse、Emacs、VisualStudio和记事本之后,我才开始熟悉EmbarcaderoRADStudio2010:)我正在进入相当大的C++应用程序(500.000-1.000.000行),我发现它广泛使用了TClientSocket和TServerSocket。IDE首先提示找不到TClientSocket但仍然可以编译,我挠了挠头。然后我发现它不再默认安装,并且从很久以前就被标记为已弃用。我曾尝试阅读有关该主题的内容,但没有找到太多信息。我的问题是为什么不推荐使用TClientSocket和TServerSocket?它们在WinSock和BSD套接字上的运行

c++ - 在不同机器之间使用 float / double 时我应该知道什么?

我听说不同CPU上的float/double存在很多问题。如果我想制作一款对所有内容都使用float的游戏,我如何才能确保每台机器上的float计算完全相同,以便我的模拟在每台机器上看起来完全一样?我还担心写入/读取文件或将浮点值发送/接收到不同的计算机。必须进行哪些转换(如果有)?我需要100%确定我的浮点值的计算结果完全相同,因为即使计算结果稍有不同,也会导致完全不同的future。这甚至可能吗? 最佳答案 除了范围限制之外,标准C++没有规定任何关于浮点类型的细节,并且可能某些数学函数(如正弦函数和指数函数)必须正确到一定的精

c++ - 我应该如何干净利落地跳出 recv 循环?

我在循环中使用recv函数来接收网络数据,但假设我想在循环中停止接收数据。我可以打破循环,但这似乎不是停止接收数据的非常干净的方法。那么有没有什么办法可以完全停止接收数据,或者只是打破循环就可以了?它是HTTPGET/POST请求。这是我正在使用的简化版:do{nDataLen=recv(mySocket,data,BUFFSIZE,0);if(nDataLen>0){/*ProcessData*///I'dliketobreakoutoftheloop//ifsomethingisfoundwhenprocessingthedata//But,Iwanttodothiscleanly

c++ - 我应该 clear() 作为参数传入的容器,还是换入一个新对象?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我在工作中讨论如何正确处理容器作为参数。我们有一个接受容器参数的函数,并希望返回仅填充函数放入其中的内容的容器:classbar;voidfoo(std::vector&bars){//dostuffthatfillsbars.//exceptionsmaybethrown.//wemayalsolegallyreturnearlyreturn;}在讨论

c++ - 编译器是否应该忽略导致运行构造函数或析构函数的未使用变量?

我有一些代码放在析构函数中以确保它在正常退出和异常堆栈展开时运行:structwithProtectedClose{~withProtectedClose(){//Dosomecleanuphere...}};voidtest(){withProtectedCloseclose;//Dosomeworkbeforeclosing}然而g++编译器(g++(GCC)3.4.620060404(RedHat3.4.6-11))正在提示:test.cpp:Infunction`voidtest()':test.cpp:28:warning:unusedvariable'close'我可以通过

c++ - 哪个类应该处理快捷方式?

我正在编写一个只有少数基本功能的简单文本编辑器。目前它有一个QMainWindow和QTabWidget设置为centralWidget。我现在正在实现的是一些捷径;ctrl+s保存,ctrl+o打开,ctrl+t/ctrl+w新建标签/关闭当前标签标签。我知道如何实现所有功能,但问题是在哪里实现这些功能?是否应该让所有快捷方式成为QMainWindow的成员并让它处理所有事情,还是应该尝试将快捷方式分离到它们相应的类中?例如,创建一个新选项卡(ctrl+t)将成为QTabWidget的一部分。现在ctrl+s(保存,duh)怎么样,它应该是QTextEdit的一部分,因为它是我正在保