草庐IT

交换效率

全部标签

c++ - 我什么时候需要交换功能?

当我编写持有资源的类时,我非常习惯于编写简单的交换函数来简化传输/复制资源的过程。以下代码是一个简单的示例:classMyArray{public:MyArray(size_tsize):_array(size?newint[size]:nullptr),_size(size){}MyArray(constMyArray&mv):MyArray(mv._size){if(mv._size)std::copy(mv._array,mv._array+mv._size,_array);}staticvoidfriendswap(MyArray&mv1,MyArray&mv2)noexcep

c++ - Allegro vs OpenGL 速度/效率明智

我使用Allegro5有一段时间了,最​​近开始研究OpenGL和Freeglut。我准备好进行转换,但我想知道这是否真的值得。OpenGL的绘图操作真的比Allegro5更高效吗? 最佳答案 Allegro5只有两个图形驱动程序:Direct3D和OpenGL。在Windows上,您可以在两者之间进行选择。在其他平台上,您必须使用OpenGL。所以你的问题有点无关紧要,因为Allegro5中的所有内容(除非你明确使用未加速的内存位图)都是硬件加速的,而且很可能通过OpenGL。如果您正在构建3D游戏,那么Allegro实际上并没有

c++ - 基于函数返回的STL容器构建效率

我有一个返回STL容器的工厂函数:conststd::vectorf(...){std::vectorretval;returnretval;}我想定义一个STL实例是可以的(没有错误):conststd::vectorstl_instance(f(...));但是这样做有效率吗?临时STL对象是否直接赋值给STL_instance? 最佳答案 返回const右值是C++11中的反模式。首先考虑返回非常量右值:std::vectorf(intn){returnstd::vector(n);}intmain(){std::vector

C++ 参数类型和效率

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改善这个问题吗?通过editingthispost添加详细信息并澄清问题.8年前关闭。Improvethisquestion根据我从编译器编写者那里收集到的信息,在效率方面,值类型比引用/指针更受欢迎。这是因为当您不必关心别名、外部更改的内存(指针所指的)、指针取消引用的成本等等时,值类型更容易推理。我不得不说,虽然我理解这些担忧,但我对具体案例仍有一些疑问。案例#0voidfoo(constfloat&f)好的,我们这里有一个引用,但它是不变的!当然,我们对它有一个恒定的View(ref),所以从外部来看它可能会

代码随想录训练营第四天 | LeetCode 24. 两两交换链表中的节点、LeetCode 19.删除链表的倒数第N个节点 、LeetCode 02.07. 链表相交、LeetCode 142

目录​​​​​​LeetCode24.两两交换链表中的节点文章讲解:代码随想录(programmercarl.com)视频讲解:帮你把链表细节学清楚|LeetCode24.两两交换链表中的节点_哔哩哔哩_bilibili思路​​​​​​LeetCode19.删除链表的倒数第N个节点文章讲解:代码随想录(programmercarl.com)视频讲解:链表遍历学清楚|LeetCode19.删除链表的倒数第N个节点_哔哩哔哩_bilibili思路LeetCode02.07.链表相交文章讲解:代码随想录(programmercarl.com)思路​​​​​​LeetCode142.环形链表II文章讲

javascript - 为什么单行 XOR 交换在 Javascript 中不起作用但在 C++ 中起作用?

这个问题在这里已经有了答案:ChainedassignmentofvariableswithoperatorsinJavaScript(2个答案)关闭7年前。在javascript中,如果我写:vara=6;varb=4;a^=b^=a^=b;console.log(a,b);结果将是06。但如果我写:vara=6;varb=4;a^=b;b^=a;a^=b;console.log(a,b);结果将是46。这是正确的。为什么这种在javascript中的单行异或交换方式不起作用?为什么它在C++中运行良好?

c++ - std::swap 是否保证通过 ADL 找到非成员交换?

这个问题在这里已经有了答案:DoesC++11changethebehaviorofexplicitlycallingstd::swaptoensureADL-locatedswap'sarefound,likeboost::swap?(4个答案)关闭6年前。TorstenT.Will关于C++11的教科书说,自C++11起,std::swap将使用ADL找到的非成员swap,如果定义了这样一个非成员函数,因此模式usingstd::swap;swap(obj1,obj2);总是可以被简单的替换std::swap(obj1,obj2);很遗憾,我在其他任何地方都没有找到这样的声明。什么

C++为什么我不能在具有已删除默认构造函数的对象上使用交换

这个问题在这里已经有了答案:Whydoesamoveconstructorrequireadefaultconstructorforitsmembers?(3个答案)关闭5年前。我正在尝试为使用类Id的对象A实现一个move构造函数。类ID是自动生成的,为了将来编码的完整性,我选择在这样做时删除默认构造函数。然而,当我尝试在A的move构造函数中使用swap时,它会提示Id的默认构造函数被删除。我以为swap不是构造任何新对象,而只是交换两个项目的地址。我是不是误会了,它实际上是在创建Id的第三个临时实例??如果是这种情况,实现下面的move构造函数的最佳方法是什么?我在下面包含了一个

c++ - 帮助模板化字节交换功能,性能受到影响?

templateinlinevoid*byteswap(void*__x);templateinlinevoid*byteswap(void*__x){return(*(uint16*)__x>>8)|(*(uint16*)__xinlinevoid*byteswap(void*__x){return(byteswap(__x&0xffff)>16));}templateinlineTbyteswap(T&swapIt){return(T*)byteswap(swapIt);}intmain(){uint32i32=0x01020304;uint16i16=0x0102;byteswa

c++ - insert in string的效率

我正在尝试为比longlong更大的非常大的整数编写这个自定义加法类。我正在研究的一种方法是将整数保留为字符串,然后将字符转换为它们的int组件,然后添加每个“列”。我正在考虑的另一种方法是将字符串拆分为多个字符串,每个字符串都是longlong的大小,然后使用字符串流将其转换为longlong添加然后重新组合。无论如何,我发现加法最容易反向完成以允许结转数字这一事实。在这种情况下,我想知道字符串插入方法的效率。似乎因为一个字符串是一个字符数组,所以所有的字符都必须移动一个。所以它会有所不同,但效率似乎是O(n),其中n是字符串中的字符数。这是正确的,还是只是天真的解释?编辑:我现在对