文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++11学习 - Array的用法与vector用法

2024-12-03 15:47

关注

-对于Array来说它是固定大小的序列容器,它们包含严格的线性序列排序的特定数量的元素,在其内部来说,数组除数组除保留其包含的元素外不保留其他任何数据(甚至不包括其大小(这是模板参数,固定在编译时))。就存储大小而言,它与使用该语言的括号语法([])声明的普通数组一样有效。此类仅向其添加一层成员和全局函数,因此可以将数组用作标准容器。要知道的是,零大小的数组是有效的,但不应该取消引用

Array的模板形式为 template < class T, size_t N > class array;

Array的功能函数

array::begin-返回的是迭代器的开始

array::end-返回的是迭代器的末尾

array::rbegin-返回反向迭代器以反向开始

array::rend-返回反向迭代器以方向末尾

array::cbegin-指针指向的const类型,不能进行修改

array::cend-同理

array::data()-有两种形式一种是const,一种是非const,返回的是数组的内容 

  1. // array::data  
  2. #include <iostream>  
  3. #include <cstring>  
  4. #include <array> 
  5. int main ()  
  6.  
  7.   const char* cstr = "www.linuxmi.com" 
  8.   std::array<char,15> charray;  
  9.   std::memcpy (charray.data(),cstr,15);  
  10.   std::cout << charray.data() << '\n'; 
  11.   return 0;  

在这里通过:memcpy函数将其定义的cstr复制到定义的数组内

运行结果:www.linuxmi.com

array::max_size-返回的是数组的最大长度 

  1. // array::max_size  
  2. #include <iostream>  
  3. #include <array>  
  4. int main ()  
  5.  
  6.   std::array<int,10> myints;  
  7.   std::cout << "size of myints: " << myints.size() << '\n';  
  8.   std::cout << "max_size of myints: " << myints.max_size() << '\n';  
  9.   return 0;  

运行结果为:

size of myints: 10

max_size of myints: 10

vector的用法

-向量是表示可以改变大小的数组的序列容器。

与array相比来说,上面所说的一些基本类型都有,vector新增了push_back,insert等一些类型

push_back-往vector最后面加数据 

  1. // vector::push_back  
  2. #include <iostream>  
  3. #include <vector>  
  4. int main ()  
  5.  
  6.   std::vector<int> myvector;  
  7.   int myint;  
  8.   std::cout << "Please enter some integers (enter 0 to end):\n";  
  9.   do {  
  10.     std::cin >> myint;  
  11.     myvector.push_back (myint);  
  12.   } while (myint); 
  13.   std::cout << "myvector stores " << int(myvector.size()) << " numbers.\n";  
  14.   return 0;  

 insert的用法 

  1. single element (1)    
  2. iterator insert (const_iterator position, const value_type& val);  
  3. fill (2)     
  4. iterator insert (const_iterator position, size_type n, const value_type& val);  
  5. range (3)     
  6. template <class InputIterator>  
  7. iterator insert (const_iterator position, InputIterator first, InputIterator last);  
  8. move (4)      
  9. iterator insert (const_iterator position, value_type&& val);  
  10. initializer list (5)      
  11. iterator insert (const_iterator position, initializer_list<value_type> il); 

代码实现 

  1. // inserting into a vector  
  2. #include <iostream>  
  3. #include <vector>  
  4. int main ()  
  5.  
  6.   std::vector<int> myvector (3,100);  
  7.   std::vector<int>::iterator it;  
  8.   it = myvector.begin();  
  9.   it = myvector.insert ( it , 200 );  
  10.   myvector.insert (it,2,300);  
  11.   // "it" no longer valid, get a new one:  
  12.   it = myvector.begin();  
  13.   std::vector<int> anothervector (2,400); 
  14.   myvector.insert (it+2,anothervector.begin(),anothervector.end());  
  15.   int myarray [] = { 501,502,503 };  
  16.   myvector.insert (myvector.begin(), myarray, myarray+3);  
  17.   std::cout << "myvector contains:";  
  18.   for (it=myvector.begin(); it<myvector.end(); it++)  
  19.     std::cout << ' ' << *it;  
  20.   std::cout << '\n';  
  21.   return 0;  

运行结果myvector contains: 501 502 503 300 300 400 400 200 100 100 100

 OK,就这样。 

 

来源:Linux公社内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯