C/C++开发

在 C++ 中转置矩阵的最快方法是什么?

我有一个需要转置的矩阵(相对较大).例如假设我的矩阵是 a b c d e fg h i j k lm n o p q r 我希望结果如下: a g m乙○ ○日kq弗尔 最快的方法是什么? 解决方案 这是个好问题.您想要在内存中实际转置矩阵而不仅仅是交换坐标的原因有很多,例如在矩阵乘法和高斯拖尾中. 首先让我列出我用于转置的一个函数(编辑:请参阅我的答案的结尾,我找到了一个 ..
发布时间:2021-12-06 19:26:40 C/C++开发

围绕另一个点旋转一个点 (2D)

我正在尝试制作一种纸牌散开的纸牌游戏.现在使用具有功能的 Allegro API 来显示它: al_draw_rotated_bitmap(OBJECT_TO_ROTATE,CENTER_X,CENTER_Y,X,Y,DEGREES_TO_ROTATE_IN_RADIANS); 所以有了这个,我可以轻松地制作我的粉丝效果.问题是知道哪张卡在鼠标下面.为此,我想到了进行多边形碰撞测试.我只是不确 ..
发布时间:2021-12-06 19:24:10 C/C++开发

图像处理:'Coca-Cola Can' 识别的算法改进

过去几年我参与过的最有趣的项目之一是关于 image 的项目处理.目标是开发一个能够识别可口可乐“罐头"的系统(注意我在强调“罐头"这个词,你马上就会明白为什么).您可以在下面看到一个示例,可以在带有缩放和旋转的绿色矩形中识别. 对项目的一些限制: 背景可能非常嘈杂. can 可以有任何比例或旋转甚至方向(在合理范围内). 图像可能有一定程度的模糊(轮廓可能不完全笔直). 图像中 ..
发布时间:2021-12-06 19:17:46 C/C++开发

如何在 C++ 中构建 ISO 8601 日期时间?

我正在使用 Azure REST API,他们正在使用它来创建表存储的请求正文: DateTime.UtcNow.ToString("o") 产生: 2012-03-02T04:07:34.0218628Z 它被称为“往返",显然它是一个 ISO 标准(参见 http://en.wikipedia.org/wiki/ISO_8601) 但我不知道如何在阅读 wiki 文章后复制它. ..
发布时间:2021-12-06 18:09:50 C/C++开发

使用 STL 排序功能对列表进行排序

我正在尝试按降序对包含 struct 项的列表(类的一部分)进行排序,但它无法编译: 错误:“__last - __first"中的“operator-"不匹配 sort(Result.poly.begin(), Result.poly.end(), SortDescending()); 这里是SortDescending: struct SortDescending{bool ope ..
发布时间:2021-12-06 14:14:58 C/C++开发

list::size() 真的是 O(n) 吗?

最近,我注意到有人提到 std::list::size() 具有线性复杂度. 根据 some sources,这实际上取决于实现,因为标准没有说明复杂性是什么. 在此博客条目中的评论说: 其实要看你是哪个STL正在使用.微软 Visual Studio V6将 size() 实现为 {return (_Size);而gcc(至少在版本中3.3.2 和 4.1.0) 这样做 { retur ..
发布时间:2021-12-06 14:05:01 C/C++开发

STL 中的向量与列表

我在 Effective STL 中注意到 vector 是序列的类型应该默认使用. 什么意思?似乎忽略效率vector 可以做任何事情. 谁能给我一个场景,其中 vector 不是一个可行的选择,但必须使用 list? 解决方案 您想在除序列末尾以外的任何地方重复插入大量项目的情况. 查看每种不同类型容器的复杂性保证: 标准容器的复杂性保证是什么? ..
发布时间:2021-12-06 13:31:47 C/C++开发

理解 std::hardware_corruption_interference_size 和 std::hardware_constructive_interference_size

C++17 添加了 std::hardware_corruption_interference_size 和 std::hardware_constructive_interference_size.首先,我认为这只是一种获取 L1 缓存行大小的可移植方式,但这过于简单化了. 问题: 这些常量与 L1 缓存行大小有什么关系? 是否有一个很好的例子来展示他们的用例? 两者都定义了st ..
发布时间:2021-12-06 11:59:24 C/C++开发

C++11 STL 容器和线程安全

我无法找到任何关于此的最新信息. C++11 版本的 STL 容器是否有一定程度的线程安全保证? 由于性能原因,我确实希望它们不会.但话又说回来,这就是为什么我们有 std::vector::operator[] 和 std::vector::at. 解决方案 由于现有的答案没有涵盖它(只有评论可以),我将仅提及 23.2.2 [container.requirements.d ..
发布时间:2021-12-06 11:58:58 C/C++开发

“静态"和“静态"有什么区别?和“动态"在 OpenMP 中安排?

我开始使用 C++ 使用 OpenMP. 我有两个问题: 什么是#pragma omp for schedule? dynamic 和 static 有什么区别? 请举例说明. 解决方案 其他人已经回答了大部分问题,但我想指出一些特定的情况,其中特定的调度类型比其他的更适合.调度控制如何在线程之间划分循环迭代.选择正确的时间表会对应用程序的速度产生很大影响. st ..
发布时间:2021-12-06 11:58:23 C/C++开发

用 c++11 等价物替换 boost::thread 和 boost::mutex 是否明智?

动机:我之所以考虑它是因为我的天才项目经理认为 boost 是另一种依赖,而且它很可怕,因为“你依赖它"(我尝试解释 boost 的质量,然后在一段时间后放弃了时间 :( ). 我想做它的较小原因是我想学习 c++11 特性,因为人们会开始在其中编写代码.所以: #include 之间是否存在 1:1 映射?#include 和提升等价物? 你认为用 c++11 替换 boost 的东西是 ..
发布时间:2021-12-06 11:57:36 C/C++开发

什么是 std::promise?

我对 C++11 的 std::thread、std::async 和 std::future 组件相当熟悉(例如,请参阅此答案),这些很简单. 然而,我无法完全理解 std::promise 是什么,它的作用是什么,在什么情况下最适合使用.标准文档本身不包含除类概要之外的大量信息,std::thread. 有人可以举一个简短的例子来说明需要 std::promise 的情况以及它是最 ..
发布时间:2021-12-06 11:56:47 C/C++开发

为什么 Windows 10 会在我的程序中启动额外的线程?

使用 Visual Studio 2015,在一个新的空 C++ 项目中,为控制台应用程序构建以下内容: int main() {返回0;} 在返回时设置断点并在调试器中启动程序.在 Windows 7 上,截至断点,该程序只有一个线程.但是在 Windows 10 上,它有五个(!)线程:主线程和四个等待同步对象的“工作线程". 谁在启动线程池(或者我如何知道)? 解决方案 C ..
发布时间:2021-12-06 11:55:53 C/C++开发

Qt - 用第二个线程更新主窗口

我有一个多线程的 qt 应用程序.当我在 mainwindow.cpp 中做一些进程时,同时我想从其他线程更新 mainwindow.ui. 我有 mythread.h #ifndef MYTHREAD_H#define MYTHREAD_H#include #include "mainwindow.h"类 mythread:公共 QThread{民众:无效运行();我的线程(主窗口* a ..
发布时间:2021-12-06 11:53:53 C/C++开发

如何在 Qt 中有效地显示 OpenCV 视频?

我在 OpenCV 的帮助下从网络摄像机捕获多个流.当我尝试从 OpenCV 窗口(cv::namedWindow(...))显示这些流时,它可以正常工作(到目前为止我已经尝试了 4 个流). 当我尝试在 Qt 小部件中显示这些流时出现问题.由于捕获是在另一个线程中完成的,我必须使用信号槽机制来更新 QWidget(在主线程中). 基本上,我从捕获线程发出新捕获的帧,GUI 线程中的一 ..
发布时间:2021-12-06 11:53:38 C/C++开发

C++:来自 std::thread 的简单返回值?

使用 win32 线程,我可以直接使用 GetExitCodeThread() 来获取线程函数返回的值.我正在为 std::thread(或 boost 线程)寻找类似的东西 据我所知,这可以通过期货来完成,但究竟如何? 解决方案 参见 关于 C++11 期货的视频教程. 明确使用线程和期货: #include #include void func(std::promis ..
发布时间:2021-12-06 11:52:28 C/C++开发

我什么时候应该使用 _mm_sfence _mm_lfence 和 _mm_mfence

我阅读了“英特尔架构的英特尔优化指南指南". 然而,我仍然不知道我应该什么时候使用 _mm_sfence()_mm_fence()_mm_mfence() 谁能解释一下在编写多线程代码时应该何时使用这些? 解决方案 警告:我不是这方面的专家.我仍在尝试自己学习这一点.不过这两天没有人回复,看来内存栅栏指令的高手并不多.所以这是我的理解...... 英特尔是一个弱序内存系统. ..
发布时间:2021-12-06 11:48:33 C/C++开发

C++11 线程安全队列

我正在处理的一个项目使用多个线程来处理一组文件.每个线程都可以将文件添加到要处理的文件列表中,所以我把(我认为是)一个线程安全队列放在一起.相关部分如下: //qMutex 是一个 std::mutex 用于保护队列//populatedNotifier 是一个 std::condition_variable 旨在//通知等待线程队列中的新项目void FileQueue::enqueue(st ..
发布时间:2021-12-06 11:42:30 C/C++开发