草庐IT

iter_swap

全部标签

c++ - std::vector::swap 是否使迭代器无效?

如果我交换两个vector,它们的迭代器会保持有效,现在只是指向“其他”容器,还是迭代器会失效?也就是说,给定:usingnamespacestd;vectorx(42,42);vectory;vector::iteratora=x.begin();vector::iteratorb=x.end();x.swap(y);//aandbstillvalid?Pointingtoxory?std似乎对此只字未提:[n3092-23.3.6.2]voidswap(vector&x);Effects:Exchangesthecontentsandcapacity()of*thiswiththa

c++ - std::vector::swap 是否使迭代器无效?

如果我交换两个vector,它们的迭代器会保持有效,现在只是指向“其他”容器,还是迭代器会失效?也就是说,给定:usingnamespacestd;vectorx(42,42);vectory;vector::iteratora=x.begin();vector::iteratorb=x.end();x.swap(y);//aandbstillvalid?Pointingtoxory?std似乎对此只字未提:[n3092-23.3.6.2]voidswap(vector&x);Effects:Exchangesthecontentsandcapacity()of*thiswiththa

c++ - 可以定义一个完全通用的 swap() 函数吗?

以下片段:#include#includenamespacefoo{templatevoidswap(T&a,T&b){Ttmp=std::move(a);a=std::move(b);b=std::move(tmp);}structbar{};}voidbaz(){std::unique_ptrptr;ptr.reset();}不为我编译:$g++-std=c++11-cfoo.cppInfileincludedfrom/usr/include/c++/5.3.0/memory:81:0,fromfoo.cpp:1:/usr/include/c++/5.3.0/bits/unique

c++ - 可以定义一个完全通用的 swap() 函数吗?

以下片段:#include#includenamespacefoo{templatevoidswap(T&a,T&b){Ttmp=std::move(a);a=std::move(b);b=std::move(tmp);}structbar{};}voidbaz(){std::unique_ptrptr;ptr.reset();}不为我编译:$g++-std=c++11-cfoo.cppInfileincludedfrom/usr/include/c++/5.3.0/memory:81:0,fromfoo.cpp:1:/usr/include/c++/5.3.0/bits/unique

c++ - 如何使用 auto 获得 const_iterator?

第一个问题:是否可以“强制”const_iterator使用汽车?例如:std::mapusa;//...initusaautocity_it=usa.find("NewYork");我只想查询,而不是更改city_it所指向的任何内容,所以我想要city_it成为map::const_iterator.但是通过使用自动,city_it与map::find()的返回类型相同,即map::iterator.有什么建议吗? 最佳答案 抱歉,但我认为最好的建议是不完全不使用auto,因为您想要执行(隐式有效的)类型转换。auto用于推断e

c++ - 如何使用 auto 获得 const_iterator?

第一个问题:是否可以“强制”const_iterator使用汽车?例如:std::mapusa;//...initusaautocity_it=usa.find("NewYork");我只想查询,而不是更改city_it所指向的任何内容,所以我想要city_it成为map::const_iterator.但是通过使用自动,city_it与map::find()的返回类型相同,即map::iterator.有什么建议吗? 最佳答案 抱歉,但我认为最好的建议是不完全不使用auto,因为您想要执行(隐式有效的)类型转换。auto用于推断e

c++ - 标准库是如何实现 std::swap 的?

STL中的交换功能是如何实现的?是不是就这么简单:templatevoidswap(T&t1,T&t2){Ttmp(t1);t1=t2;t2=tmp;}在其他帖子中,他们谈到了为您自己的类(class)专门设计此功能。为什么我需要这样做?为什么我不能使用std::swap功能? 最佳答案 std::swap是如何实现的?是的,问题中提出的实现是经典的C++03实现。std::swap的更现代(C++11)实现如下所示:templatevoidswap(T&t1,T&t2){Ttemp=std::move(t1);//orTtemp(

c++ - 标准库是如何实现 std::swap 的?

STL中的交换功能是如何实现的?是不是就这么简单:templatevoidswap(T&t1,T&t2){Ttmp(t1);t1=t2;t2=tmp;}在其他帖子中,他们谈到了为您自己的类(class)专门设计此功能。为什么我需要这样做?为什么我不能使用std::swap功能? 最佳答案 std::swap是如何实现的?是的,问题中提出的实现是经典的C++03实现。std::swap的更现代(C++11)实现如下所示:templatevoidswap(T&t1,T&t2){Ttemp=std::move(t1);//orTtemp(

javascript - Angular:找不到 Promise、Map、Set 和 Iterator

安装Angular后,Typescript编译器不断收到一些关于找不到Promise、Map、Set和Iterator.直到现在我忽略了它们,但现在我需要Promise以便我的代码可以工作。import{Component}from'angular2/core';@Component({selector:'greeting-cmp',template:`{{asyncGreeting|async}}`})exportclassGreetingCmp{asyncGreeting:Promise=newPromise(resolve=>{//after1second,thepromisew

javascript - Angular:找不到 Promise、Map、Set 和 Iterator

安装Angular后,Typescript编译器不断收到一些关于找不到Promise、Map、Set和Iterator.直到现在我忽略了它们,但现在我需要Promise以便我的代码可以工作。import{Component}from'angular2/core';@Component({selector:'greeting-cmp',template:`{{asyncGreeting|async}}`})exportclassGreetingCmp{asyncGreeting:Promise=newPromise(resolve=>{//after1second,thepromisew