草庐IT

Cmp_Swap

全部标签

c++ - 为什么 std::copy 或 std::swap 不需要 <algorithm>?

根据这个cplusplus.com页,std::copy在header,原样std::swap然而这有效:#include//std::cout#include//std::vector#include//std::ostream_iterator()#include//rand(),srand()//NOTincludingintmain(){srand(time(NULL));constintSIZE=10;std::vectorvec;for(inti=0;i(std::cout,""));std::cout我唯一能想到的是它们是由导出的也...但是为什么我们需要标题吗?

C++ 编译器无法识别 std::stringstream::swap

我正在尝试使用g++(GCC)4.8.220131212(RedHat4.8.2-7)编译以下代码:#includeusingnamespacestd;intmain(intargc,char**argv){autox=1;stringstreams1,s2;s1.swap(s2);}我收到以下错误:g++-g-std=c++0x-cmain.cppmain.cpp:Infunction‘intmain(int,char**)’:main.cpp:8:5:error:‘std::stringstream’hasnomembernamed‘swap’s1.swap(s2);^make:*

c++ - 为什么内存泄漏只发生在赋值运算符重载的情况下而不发生在复制构造函数中以及 copy-and-swap 习语如何解决它

P.S:我是编程新手,所以请用更简单的术语回答我的疑问。我找到了几个答案,但无法理解。下面是复制构造函数和赋值运算符重载。templateMystack::Mystack(constMystack&source)//copyconstructor{input=newT[source.capacity];top=source.top;capacity=source.capacity;for(inti=0;iMystack&Mystack::operator=(constMystack&source)//assignmentoperatoroverload{input=newT[sourc

c++ - 对于简单类型C++,使用静态tmp变量重新实现std::swap()

我决定用一个inttmp变量对简单类型(例如struct或class或仅在其字段中仅使用简单类型的static)的交换函数的实现进行基准测试,以防止每次交换调用中分配内存。所以我写了这个简单的测试程序:#include#include#include#includetemplatevoidmySwap(T&a,T&b)//Likestd::swap-justfortests{Ttmp=std::move(a);a=std::move(b);b=std::move(tmp);}templatevoidmySwapStatic(T&a,T&b)//Herewithstatictmp{sta

c++ - std::swap(*(void **)x, *(void **)y) 是什么意思?

我刚读了这个答案Howarevirtualfunctionsandvtableimplemented?.响应的作者使用了这个表达式:std::swap(*(void**)x,*(void**)y);//NowxisaC,andyisaB!Hopetheyusedthesamelayoutofmembers!有人可以解释一下它是如何工作的吗?为什么以及什么是(void**)后跟operator*? 最佳答案 它涉及未定义的行为,因此不能保证有效。基本思想是x和y是指向相同基类型对象的指针,其中该类型至少有一个虚函数,并且编译器通过在每

c++ - 在 copy-and-swap 习语中实现交换

正在关注Whatisthecopyandswapidiom和Howtoprovideaswapfunctionformyclass,我尝试像后者接受的答案选项2那样实现交换函数(具有调用成员函数的自由函数),而不是前一个链接中的直接友好自由函数。但是下面的不编译#include//Uncommentingthefollowingtwolineswon'tchangethestateofaffairs//classBar;//voidswap(Bar&,Bar&);classBar{public:Bar(unsignedintbottles=0):bottles(bottles){enf

c++ - 没有上下文类型信息的重载函数 |无法根据转换为类型 'swap' 解析重载函数 'int'

我正在尝试编写自己的冒泡排序算法作为练习。我不明白这两个错误消息。谁能指出我的代码的问题?//Bubblesortalgorithm#include#includeusingnamespacestd;voidbubbleSort(intarray[],intarraySize);//bubbleSortprototypeintmain(void){constintarraySize=10;intarray[arraySize]={2,3,6,5,7,8,9,3,7,4};coutarray[i+1]){swap=array[i+1];array[i+1]=array[i];array[

这个被称为“仙女Swap”的DEX FairySwap,成就Findora生态价值洼地

现阶段,随着各大DeFi生态比如以太坊、Terra、BSC等的日渐成熟,已经逐渐的从早期的“红利”期,逐渐的进入到了发展期。除了生态内的应用、数据指标激增外,参与其中的参与者整体收益则日渐下降。虽然很多投资者错过了这些优质公链生态的红利期,但目前仍旧有一些潜力生态处于生态发展的早期,并且对于很多投资者来说蕴含着巨大的红利机会。Findora是一个以隐私著称的公链生态,Findora能够为加密应用走向主流人群带来更大的隐私计算需求,当前的透明性无法满足未来隐私的要求,例如医疗数据在区块链上应用、传统金融业务的链上构建等,如何在获得想要结果的同时实现隐私?不管是元宇宙还是其他,都有这方面的需求。这

c++ - copy-and-swap 技术在赋值运算符函数中使用复制构造函数

我正在阅读“EffectiveC++byScottMeyers”,其中第11项建议在我的赋值运算符中使用“copy-and-swap”技术:Widget&Widget::operator=(constWidget&rhs){Widgettemp(rhs);//Copyconstructorswap(temp);//Swapwith*thisreturn*this;}但是在Item12中是这样写的:Itmakesnosensetohavecopyassignmentoperatorcallthecopyconstructor.我认为第11项和第12项是矛盾的。我理解错了吗?

c++ - 如何为我的模板类添加 std::swap?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:howtoprovideaswapfunctionformyclass?关于这个有一些问题,但有很多矛盾(A给出解决方案A',B说它是UB)或“只有在编译器支持ADL时才有效”得到了回答。所以,假设我有以下模板(容器)类:templateclassC{//...voidswap(C&y)throw();//Cx;x.swap(y);}那么确保此(示例)代码有效的正确方法是什么:Cx,y;std::swap(x,y);请给出你对C++03的回答,如果它在C++0x中仍然有效,那就更好了!