注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

18-4在list 中 删除元素C++11标准  

2014-04-14 00:06:09|  分类: STL 基本的用法 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

//list<int>::const_iterator index=i.insert (i.begin (),2);zhuyi ha
#include<iostream>
#include<list>
using namespace std;

template<typename T>
void display(const T& input)
{
for(T::const_iterator jj=input.begin();jj!=input.end();jj++)
{
cout<<*jj<<endl;
}
cout<<endl;
}
int main()
{
list<int> i;
i.push_back(4);
i.push_front(3);
i.push_back(5);

/*inster 返回一个迭代器 该迭代器指向新插的元素
iterator erase(iterator _P)
{_Nodeptr _S = (_P++)._Mynode();
_Acc::_Next(_Acc::_Prev(_S)) = _Acc::_Next(_S);
_Acc::_Prev(_Acc::_Next(_S)) = _Acc::_Prev(_S);
allocator.destroy(&_Acc::_Value(_S));
_Freenode(_S);
--_Size;
return (_P); }
iterator erase(iterator _F, iterator _L)
{while (_F != _L)
erase(_F++);
return (_F); }*/
list<int>::iterator index=i.insert (i.begin (),2);//这里的不能用const_iterator 不能修改值啊!

cout<<" cout 1 string:";
display(i);

i.erase(i.begin (),index);//删除begin与 2之间的元素,所以二不被删除,等于不做功;
cout<<" cout 2 string:";
display(i);

cout<<"after eraseing element: "<<*index<<":"<<endl;
i.erase (index);
display(i);

i.erase (i.begin(),i.end ());
cout<<"number of elements after eraseing range:";
cout<<i.size ()<<endl;
return 0;
}
//2014.3.2 23;16;

#include <list>
#include <iostream>
using namespace std;

template <typename T>
void DisplayContents(const T& Input)
{
for(auto iElement = Input.cbegin() // auto, cbegin: c++11
; iElement != Input.cend() // cend() is new in C++11
; ++ iElement )
cout << *iElement << ' ';

cout << endl;
}

int main()
{
std::list <int> listIntegers;

// Insert elements at the beginning and end...
listIntegers.push_back(4);
listIntegers.push_front(3);
listIntegers.push_back(5);

// Store an iterator obtained in using the 'insert' function
auto iValue2 = listIntegers.insert(listIntegers.begin(), 2);

cout << "Initial contents of the list:" << endl;
DisplayContents(listIntegers);

listIntegers.erase(listIntegers.begin(), iValue2);
cout << "Contents after erasing a range of elements:" << endl;
DisplayContents(listIntegers);

cout << "After erasing element '"<< *iValue2 << "':" << endl;
listIntegers.erase(iValue2);
DisplayContents(listIntegers);

listIntegers.erase(listIntegers.begin(), listIntegers.end());
cout << "Number of elements after erasing range: ";
cout << listIntegers.size() << endl;

return 0;
}
Initial contents of the list:
2 3 4 5
Contents after erasing a range of elements:
2 3 4 5
After erasing element '2':
3 4 5
Number of elements after erasing range: 0

--------------------------------
Process exited with return value 0
Press any key to continue . . .


  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017