博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vector讲一个容器的内容拷贝到另一个容器,容器的区间删除
阅读量:5269 次
发布时间:2019-06-14

本文共 2326 字,大约阅读时间需要 7 分钟。

1、容器的区间删除

假设有容器Vector<double>scores;

如果删除第一个元素

scores.erase(scores.begin() , scores.begin() + 1);

删除第二个元素

scores.erase(scores.begin() + 1 , scores.begin() + 2);

删除前两个元素

scores.erase(scores.begin() , scores.begin() + 2);

erase的删除区间是[p1,p2)包括p1,但是不包括p2,如上述例子中删除前两个元素,删除的元素是第一个和第二个,但是不包括第三个元素scores.begin() + 2

2、将一个容器的内容拷贝到另一个容器中

(1)C++提供了一个容器的默认拷贝构造函数,可以完全拷贝,也就是完全复制一个相同的容器

比如说有容器vector<Review>books,这时候我们可以完全复制一个相同的容器vector<Review>oldlist(books);此时容器oldlist就是一个和books完全一样的容器。

(2)将一个容器的内容部分插入到另一个容器中

两个容器:Vector<int>old_v

     Vector<int>new_v

old_v.insert(old_v.begin(), new_v.begin(), new_v.end() );

其中new_v.begin(), new_v.end()为插入的区间,old_begin()为要插入的地址。也就是你要把哪部分内容(new_v.begin(), new_v.end()区间的内容,待插入的新容器的内容),插入到哪里去(old_v.begin()为要插入的地址,就是你要插入到哪个容器的什么位置)。

示例代码:

main.cpp

1 #include 
2 #include
3 #include
4 5 struct Review 6 { 7 std::string title; 8 int rating; 9 }; 10 11 bool FillReview(Review &rr); 12 void ShowReview(const Review &rr); 13 int main() 14 { 15 std::vector
books; 16 Review temp; 17 18 while (true) 19 { 20 if (FillReview(temp)) 21 { 22 books.push_back(temp); 23 } 24 else 25 { 26 break; 27 } 28 } 29 30 int nums = books.size(); 31 if (nums > 0) 32 { 33 for (int i = 0; i < nums; i++) 34 { 35 ShowReview(books[i]); 36 } 37 std::vector
::iterator ptr; 38 for (ptr = books.begin(); ptr != books.end(); ptr++) 39 { 40 ShowReview(*ptr); 41 } 42 43 std::cout<<"移除第二个元素"<
oldlist(books);//copy consturctor used 45 if (nums > 3) 46 { 47 //移除第二个元素 48 books.erase(books.begin() + 1, books.begin() + 2); 49 } 50 //输出看移除之后的结果 51 for (ptr = books.begin(); ptr != books.end(); ptr++) 52 { 53 ShowReview(*ptr); 54 } 55 56 std::cout<<"插入一个元素"<
>rr.rating; 88 if (!std::cin) 89 { 90 return false; 91 } 92 93 while (std::cin.get() != '\n') 94 { 95 continue; 96 } 97 98 return true; 99 }100 101 void ShowReview(const Review &rr)102 {103 std::cout<<"rr.rating : "<
<
<<"rr.title : "<
<

 

转载于:https://www.cnblogs.com/LYF-LIUDAO/p/7049060.html

你可能感兴趣的文章
ubuntu安装和查看已安装
查看>>
20150916-html第一次课
查看>>
js 正则表达式符号含义
查看>>
思考不动的时候
查看>>
Resharper让我们的asp.net开发效率提高三分之一
查看>>
MonkeyDevice模块功能详解
查看>>
Python学习笔记(yield与装饰器)
查看>>
python 备份脚本
查看>>
ES6-块级作用域绑定-let和const
查看>>
jquery 简单弹出层
查看>>
Android应用程序支持不同屏幕(尺寸、密度)
查看>>
javasrcipt的作用域和闭包(二)
查看>>
git使用备注
查看>>
链表刷题总结
查看>>
Apache RocketMQ 正式开源分布式事务消息
查看>>
Tavas and Malekas
查看>>
PHP脚本的执行时间如何分段计算出来
查看>>
最小堆_最大堆
查看>>
二维数组_一维数组
查看>>
内容分享-迅为IMX6开发板编译问题及解决方法
查看>>