开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1670|回复: 0
收起左侧

[其它] C++向量简单介绍

[复制链接]
发表于 2011-11-13 13:24:30 | 显示全部楼层 |阅读模式   浙江省台州市
向量( vector )
向量与数组相比的优点:
l  向量与数组的共同特征是元素的排列在逻辑上是线性序列结构,可以用下标进行访问
l  向量可以按需创建,拷贝创建,局部拷贝创建,异类拷贝和创建
l  灵活的初始化
l  随意扩容和元素增减
l  可通过异常来进行下标溢出追踪和处理
l  可比较
常用操作:
使用时要包含vector头文件。
int t[5]={1,2,3,4,5};
vector<int> a(n);   //按需创建
vector<int> b(10, 1);  //10个元素赋全1,灵活的初始化
vector<int> c(b);  //整体拷贝创建
vector<int> f(t, t+5);  //异类拷贝创建
迭代器定义:
Vector  <int>  ::iterator   it;
It为定义的迭代器,为指针类型;
b.begin();迭代器指向第一个元素位置;
b.end();迭代器指向最后一个元素的后一个位置;
b.size();求得向量里的元素数;
vector<int> d(b.begin(), b.begin()+3); //局部拷贝创建d为b的前3个元素
a.assign(100);  //动态扩容至100个元素
a.assign(b.begin(), b.begin()+3);  // b的前3个元素赋给a
a.assign(4,2);           // a向量含4个元素,全初始化为2
int x = a.back();        // a的最后一个元素赋给变量x
a.clear();               // a向量清空(不再有元素)
if(a.empty()) cout<<”empty”;  // a判空操作
int y = a.front();       // a的第一个元素赋给变量y
a.pop_back();     //删除a的最后一个元素
a.push_back(5);   // a最后插入一个元素,其值为5
a.resize(10);  // a元素个数调至10。多删少补,其值随机
a.resize(10,2);//a元素个数调至10。多删少补,新添元素初值为2
if(a==b) cout<<”equal”;  // a与b的向量比较操作

下面随便写的一些代码,只是为了说明和测试上面的函数:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp(int a,int b);
int main()
{
      int i;
   vector<int> a;
   for(i=1;i<=10;i++)
   a.push_back(i);

   for(i=0;i<a.size();i++)
         cout<<a;
   cout<<endl;

   vector <int>::iterator it;
   for(it=a.begin();it!=a.end();it++)
         cout<<*it;
   cout<<endl;
   int x=a.back();
   cout<<x<<endl;
   vector <int> c(a);

   int y=c.front();
   cout<<y<<endl;
   a.pop_back();

   for(it=a.begin();it!=a.end();it++)
         cout<<*it;
   cout<<endl;
   a.resize(12);

   for(it=a.begin();it!=a.end();it++)
         cout<<*it;
   cout<<endl;
   a.resize(15,2);

   for(it=a.begin();it!=a.end();it++)
         cout<<*it;
   cout<<endl;
   c.clear();
   if(c.empty)
         cout<<"向量已为空!\n";

   vector <int> d(a.begin(),a.begin()+5);
   for(it=d.begin();it!=d.end();it++)
         cout<<*it;
   cout<<endl;

   sort(a.begin(),a.end(),cmp);   
(这是提到的排序算法,随便提一下,具体可以在找资料看一下)
   for(it=a.begin();it!=a.end();it++)
         cout<<*it;
   cout<<endl;
}

bool cmp(int a,int b)
{ return a>b; }
文章来源:蜗牛COM 电脑社区——http://56woniu.5d6d.com【详细参考】:原文地址——http://56woniu.5d6d.com/thread-221-1-2.html

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表