草庐IT

collisions_block

全部标签

c++ - 函数 try block ,但不在构造函数中

只是一个简单的问题。有什么区别吗voidf(Foox)try{...}catch(exception&e){...}和voidf(Foox){try{...}catch(exception&e){...}}?如果不是,为什么函数tryblock用于(搁置构造函数的初始化列表的情况)?如果Foo的复制构造函数在x传递给f时抛出异常,会发生什么情况? 最佳答案 只有在构造函数中才需要函数tryblock。在所有其他情况下,通过将函数的整个主体包含在普通的try/catchblock中,可以实现完全相同的效果。如果用于初始化参数的复制构造

c++ - 在 try catch block 中断言

我目前正在对一段代码添加处理以使其不会崩溃。目前它有每个步骤,然后是一个ASSERT语句,以确保上一步没有出错。如果这些步骤中的某个步骤出了问题,那确实是出了大问题。该程序应该停止。虽然在Release模式下程序遇到断言,但愉快地继续运行并崩溃。为了解决这个问题,我将方法包装在一个try/catchblock中,并在断言所在的位置抛出错误。这应该捕获我们跟踪的所有错误和我们没有跟踪的其他错误。现在我的问题是,我是否仍应使用断言来通知程序员这不应该发生?或者现在将它们取出,因为它不会因为catchblock(我清理对象的地方)而崩溃?或者我应该只在catchblock中抛出一个断言,而不

c++ - 使用 x86/x64 流 SIMD 扩展的 block 匹配优化

这将是我发布的第一个SO问题!std::cout我正在尝试使用Intel的SSE4.2和/或AVX内在函数优化立体视觉应用程序的“block匹配”实现。我正在使用“绝对差之和”来找到最佳匹配block。在我的例子中,blockSize将是一个奇数,例如3或5。这是我的C++代码片段:for(inti=0;i(l,m),lImage.at(l,m+k));}}if(S(i,j)=kStar;}}我知道StreamingSIMDExtension包含许多使用SAD进行block匹配的指令,例如_mm_mpsadbw_epu8和_mm_sad_epu8,但它们都以为目标blockSize为4

c++ - 如何获得大对齐的 block ?

为了避免维护复杂的数据结构,我想分配具有相当大对齐方式的block(比如几千字节,可能是几兆字节,总是以二的幂为单位)。这允许我屏蔽指针的低位,以便轻松检索它指向的block的开头地址。我想要一种方法来保证分配这样一个具有指定对齐方式的block,例如。分配具有4096字节对齐的4096字节block。对于有效的方法,对齐将始终是block的大小,因此从长远来看,内存浪费预计将成为一个问题。我使用的是C++(因此C和C++技术很好),任何解决方案都应该可以跨通用桌面环境移植。如果没有可移植的解决方案,Linux具有最高优先级。我知道Win32memoryallocationwithla

java - 在 C++ 中是否有类似 Java 初始化 block 的构造?

我在一些文章中读到,在java中有一个叫做Initializingblocks的东西;当加载类或创建实例时,我们可以在其中执行一些初始化分配。Apartfrommethodsandconstructors,InitializationBlocksarethethirdplaceinaJavaProgramwhereoperationscanbeperformed.classInitDemo{staticinty;intx;{y=10;x=0;}}我想问一下C++中是否有这样的范例?谢谢。 最佳答案 需要指出的是,Java中有两种不同

C++11 在不使用 try/catch block 的情况下安全地加入线程

根据文档here和here,如果joinable()==false,C++11线程的join方法将抛出std::system_error。因此,等待线程完成执行的自然方式是:if(thread2.joinable())thread2.join();但是,这有可能抛出std::system_error。考虑线程1调用thread2.joinable(),返回true,说明thread2还在运行。然后调度程序暂停线程1并将上下文切换到线程2。线程2完成,然后线程1恢复。线程1调用thread2.join(),但线程2已经完成,因此抛出std::system_error。一个可能的解决方案是

c++ - std::map 标准分配器性能与 block 分配器

我在一本C++优化手册上读到,STL容器的标准分配器,如std::list、std::set、std::multi_set、std::map、estd::multi_map可以替换为性能更高的block分配器。block分配器具有更高的性能、低碎片和高效的数据缓存。我在网上找到了FSBAllocator,它声称比标准速度更快。http://warp.povusers.org/FSBAllocator/我已经用std::map试过了,发现它确实更快,但我的问题是STL实现怎么会比特定分配器慢那么多,而另一个分配器比标准分配器有什么缺点,在便携性和稳健性方面?我的代码必须在各种体系结构(w

c++ - 如何使用带有 Code::Blocks 的 OpenCV 2.4.3 编译程序?

我已经安装了Code::BlockswithMinGW和OpenCV2.4.3。我想编译这个简单的程序:#include#includeusingnamespacecv;usingnamespacestd;intmain(){Matim=imread("c:/path/to/lena.jpg");if(im.empty()){cout如何正确设置CodeBlocks以编译上述代码?我已经在c:\opencv中安装了OpenCV。 最佳答案 要将OpenCV与CodeBlocks一起使用,您需要告诉CodeBlocks:包含OpenC

c++ - 如何在没有未定义行为的情况下进行双 block 添加?

编辑公共(public)健康警告-这个问题包含关于未定义行为的错误假设。查看已接受的答案。看完之后recentblogpost,我一直在思考在C和C++代码中避免所有标准未定义假设的实用性。这是从C++中截取的片段,用于执行无符号的128位加法...voidc_UInt64_Pair::operator+=(constc_UInt64_Pair&p){m_Low+=p.m_Low;m_High+=p.m_High;if(m_Low这显然依赖于关于溢出行为的假设。显然,大多数机器都可以支持正确类型的二进制整数(尽管可能是从32位block或其他任何东西构建的),但显然优化器可能会在这里利

c++ - 函数 try block 的目的是什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whenisafunctiontryblockuseful?Differencebetweentry-catchsyntaxforfunction这段代码在UseResources类中构造Dog对象时抛出一个int异常。int异常被普通的try-catchblock捕获,代码输出:Cat()Dog()~Cat()Insidehandler#includeusingnamespacestd;classCat{public:Cat(){cout现在,如果我们将UseResources()构造函数的定义替换为使用f