forward_list //有自己专有版本的insert和emplace; forward_list //不支持push_back和emplace_back vector, string //不支持push_front和emplace_front c.push_back(t), c.emplace_back(args) //在c的尾部创建一个值为t的或者由args创建的元素,返回void c.push_front(t), c.emplace_back(args) //同上,吧尾部改为头部 c.insert(p,t), c.emplace(p,args) //在迭代器p的前面创建一个t或由args生产一个值插入,返回指向新添加元素的迭代器 c.insert(p, n, t) //在迭代器p指向的元素之前插入n个t值,返回指向新添加的第一个值的迭代器。 c.insert(p, b, e) //吧迭代器b,e之间的元素插入到p之前,返回指向新添加的第一个元素 c.insert(p, il) //il是一个花括号包围的元素值列表。同上
//从标准输入读取数据,将每个单词放到容器末尾
string word;
while(cin>>word)
container.push_back(word);void pluralize(size_t cnt, string &word)
{
if(cnt > 1)
word.push_back('s'); //等价word +='s'
}
list<int> ilist;
for(size_t ix=0 ; ix != 4 ; ++ix)
{
ilist.push_front(ix);
}vector<string> svec;
list<string> slist;
//等价于调用slist.push_front("Hello!");
slist.insert(slist.begin(), "Hello!");
svec.insert(svec.begin(), "Hello!"); //速度回比较慢//在c的末尾构造一个Sales_data对象
//使用三个参数的Sales_data构造函数
c.emplace_back("978-0590353403", 25, 15.99);
//错误:没有接受三个参数的push_back版本
c.push_back("978-0590353403", 25, 15.99);
//正确:创建一个临时的Sales_data对象传递给push_back
c.push_back(Sales_data("978-0590353403", 25, 15.99));//在解引用一个迭代器或调用front或front之前检查是否有元素
if(!c.empty())
{
//val和val2是c中第一个元素值的拷贝
auto val=*c.begin(), val2=c.front();
//val3和val4是c中最后一个元素值的拷贝
auto last=c.end();
auto val3=*(--last); //不能递减forward_list迭代器
auto val4=c.back(); //forward_list不支持
}
c[n] //返回c中下标为n的元素引用 c.at(n) //返回c中下标为n的元素引用
vector<string> svec; //空vector cout<<svec[0]; //运行错误,vector是空的 cout<<svec.at(0); //抛出一个out_of_range异常
c.pop_back() //删除c中尾元素 c.pop_front() //删除c中首元素 c.erase(p) //删除迭代器p指向的元素 c.erase(b, e) //删除迭代器b和e之间的元素 c.clear() //删除c中的所有元素
while(!ilist.empty())
{
process(ilist.front()); //对ilist的首元素进行一些处理
ilist.pop_front(); //完成处理后删除元素
}list<int> lst={0,1,2,3,4,5,6,7,8,9};
auto it=lst.begin();
while(it != lst.end())
if(*it%2) //若为奇数
it=lst.erase(it); //删除此元素
else
++it;forward_list<int> flst={0,1,2,3,4,5,6,7,8,9};
auto prev=flst.before_begin(); //表示flst的“首前元素”
auto curr=flst.begin(); //表示flst总的第一个元素
while(curr != flst.end())
{
if(*curr%2)
{
curr=flst.erase_after(prev); //删除并移动curr位置
}
else
{
prev=curr;
++curr;
}
}list<int> ilist(10, 42); //10个int:每个的值都是42 ilist.resize(15); //将5个值为0的元素添加到ilist的末尾 ilist.resize(25, -1); //将10个值为-1的值加到末尾 ilist.resize(5); //从末尾删除20个元素
//傻瓜循环,删除偶数元素,复制每个奇数元素
vector<int> vi={0,1,2,3,4,5,6,7,8,9};
auto iter=vi.begin(); //调用begin而不是cbegin,因为我们要改变vi
while(iter != vi.end())
{
if(*iter%2)
{
iter=vi.insert(iter, *iter); //复制当前元素,插在前面,返回指向新加的元素的
//迭代器
iter+=2;
}
else
{
iter=vi.erase(iter); //删除偶数元素
//不应该向前移动迭代器,iter指向我们删除之后的元素
}
}
我要坚持不下了!!!【足迹C++primer】26、顺序容器操作,布布扣,bubuko.com
原文地址:http://blog.csdn.net/cutter_point/article/details/30018363