草庐IT

保持器

全部标签

c++ - 是否有一种数据结构不允许重复并且还保持输入顺序?

重复:ChoosingaSTLcontainerwithuniquenessandwhichkeepsinsertionordering我正在寻找一种类似于集合的数据结构,因为它不允许插入重复项,但也知道项的插入顺序。它基本上是集合和列表/vector的组合。我只会使用列表/vector并自己检查重复项,但我们需要快速进行重复验证,因为结构的大小可能会变得非常大。 最佳答案 看看Boost.MultiIndex.您可能需要为此编写一个包装器。 关于c++-是否有一种数据结构不允许重复并且

c++ - Qt:即使失去焦点也将子窗口保持在父窗口之上

我有一个由主窗口调用的UI窗口。我希望它是非模态的,但保持在父级之上,如果父级被最小化,则与它一起最小化。如果用户想对两者都进行更改,他应该能够做到,除非用户关闭子项,否则不会关闭它。子级将始终位于父级之上-但不会位于其他任何东西之上。m_child->show();m_child->activateWindow();上面的代码将child置于父级之上,它允许在子级启动时对父级进行操作...但是如果失去焦点,子级将隐藏在父级后面。m_child->show();m_child->activateWindow();m_child->raise();没有变化。使用Qt::WindowFla

c++ - 保持大型 C++ 项目模块化的建议?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion我们的团队正在转向规模更大的项目,其中许多项目在其中使用了多个开源项目。有什么建议或最佳实践可以使库和依赖项相对模块化并在新版本发布时易于升级?换句话说,假设您制作的程序是开源项目的分支。随着这两个项目的发展,维护和共享核心更新的最简单方法是什么?关于我要问的问题的建议......我不需要“你应该这样做”或“你为什么......谢谢。”

c++ - 使用opencv warpaffine时如何保持白色背景

我正在尝试使用旋转图像voidrotate(cv::Mat&src,doubleangle,cv::Mat&dst){intlen=std::max(src.cols,src.rows);cv::Point2fpt(len/2.,len/2.);cv::Matr=cv::getRotationMatrix2D(pt,angle,1.0);cv::warpAffine(src,dst,r,cv::Size(src.cols,src.rows));}通过给出角度、源和目标图像。旋转工作正常,如下所示。我想让黑色区域变白。我试过cv::Matdst=cv::Mat::ones(src.col

c++ - 当 C++ 线程退出时,内存是否保持分配状态?

我在Linux上使用pthread库。我在线程A中分配一个字符串,然后尝试在线程B中打印该字符串。但是,该字符串只是打印出空字符串(我已验证它在线程A中有效)。注意:该字符串驻留在一个对象内,我怀疑该对象可能正在被清理或重新实例化为空...容器对象没有给我一个段错误或任何东西,只是所有的值都是空的。这是因为线程无法从其他线程访问内存,还是因为线程A停止后内存被取消分配?或者两者都不是;这很可能是我代码中的错误,但我只是想排除这种可能性......更新:原来是内存问题。感谢您的回答,我也有answeredthismyself,如果您同意/不同意,请对我的回答发表评论。

c++ - OpenGL 缓冲区的状态如何在程序运行之间保持不变?

我正在编写一个绘制到辅助缓冲区的OpenGL程序,然后辅助缓冲区的内容在被GL_RETURN-ed到后台缓冲区(本质上是合成到屏幕)之前累积到累积缓冲区。简而言之,我正在做一种运动模糊。然而奇怪的是,当我重新编译并重新运行我的程序时,我看到了先前程序运行时辅助/累积缓冲区的内容。这根本不符合逻辑。我是不是误会了什么,当程序重新启动时,OpenGL的状态不应该完全重置吗?我正在GeForceGo6150上的GentooLinuxnVidia驱动程序195.36.31中编写SDL/OpenGL程序。 最佳答案 否-您的GPU没有理由清除

c++ - 包装原子类型并确保它保持原子性

我有一个有点独特和有趣(而且很糟糕)的场景,它迫使我做一些棘手的事情。问题如下:我们需要一个原子类型来在实时线程和后台加载线程之间进行无锁同步。类型(不幸的是)必须编译:一个。QNX只有c++03,但支持boost::atomic。具有c++11但无法构建boost::atomic的Nucleus这迫使我考虑同时使用boost::atomic和std::atomic。我处理这个问题的方法是生成一个新类型,将所有功能转发给平台上相关的atomic类型。这个想法是这样的:原子.hppnamespaceosal{namespacedetail{templateclassTAtomic>str

c++ - 我怎样才能确保内存映射文件保持内存页面可访问?

我正在使用Qt将一个文件映射到一段内存页面QFile::map(qint64offset,qint64size,MemoryMapFlagsflags=NoOptions)本质上,这应该是一个mmap系统函数调用。我想知道如何保证我可以访问返回的内存,即使磁盘上的文件被截断。我似乎需要这个,因为我从磁盘文件中读取并希望优雅地处理错误if(offset>m_file.size())//throwanerror...if(m_mappedFile!=NULL)returnm_mappedFile+offset;显然,这包含竞争条件,因为文件大小可能会在检查和访问映射之间发生变化。如何避免这

c++ - 使用 C++ Lambda 函数作为 Qt 中的槽是否有助于保持库的二进制兼容性?

我关心的是使在Qt5.9下开发的小部件库能够在未来升级而无需重新编译已经使用它的代码。当然,我是从PImpl习语开始的,它的Qt版本描述了here和here。然而,在尝试调整我的代码时,我想到了一个想法,与其添加新的数据成员并将它们移动到一个单独的私有(private)类,不如使用Qt的带有lambda函数的信号/槽机制,并且只有本地变量。让我们用下面的例子来说明这个想法:变体A:classFoo:publicQWidget{Q_OBJECTpublic:explicitFoo(QWidget*parent=nullptr);private://AbunchofdatamembersQ

c++ - Constexpr 替代 placement new 能够使内存中的对象保持未初始化状态?

我正在尝试创建一个静态容器,它具有基于堆栈的内存并且可以容纳T的N个实例。非常类似于std::vector我希望当前未使用的内存不包含T的初始化项。这通常可以通过placementnew来解决,但不可能在constexpr中使用。使用union我发现了一个技巧,您可以为此使用union,如下所示:templateunioncontainer_storage_type{structempty{};constexprcontainer_storage_type():uninitialized{}{}constexprcontainer_storage_type(value_typev):v