首页 > 代码库 > 4.9,4.10
4.9,4.10
4.9类型组合
1 #include<iostream> 2 struct years 3 { 4 int year; 5 }; 6 7 int main() 8 { 9 using namespace std;10 11 years s1,s2,s3;12 s1.year=1998;13 14 years *pa=&s2;15 pa->year=1999;16 17 years trio[3];//array of 3 structures18 trio[0].year=2003;19 cout<<trio->year<<endl;20 21 const years *arp[3]={&s1,&s2,&s3};22 cout<<arp[1]->year<<endl;23 24 const years **ppa=arp;25 auto ppb=arp;//c++11 automatic type deduction26 cout<<(*ppa)->year<<endl;27 cout<<(*(ppa+1))->year<<endl;28 29 return 0;30 }
4.10数组的替代品
vector
头文件<vector>,使用using namespace std
1 #include<vector>2 using namespace std;3 vector<int> vi;//设置初始长度为04 int n;5 cin>>n;6 vector<double> vd(n);//n个double的数组
模板:vector<typename>vt<n_elem>
n_elem可以是常量也可以是变量
array(c++11)
头文件<array>,使用using namespace std;
1 #include<array>2 using namespace std;3 array<int,5>ai;4 array<double ,a>ad={1.2,2.1,6.43,6.5};
模板:array<typename,n_elem>arr;
n_elem不能使变量。
例子:
1 #include<iostream> 2 #include<vector> 3 #include<array> 4 int main() 5 { 6 using namespace std; 7 double a[4]={1.2,2.4,3.6,4.8}; 8 9 vector<double>b(4);10 b[0]=1.0/3.0;11 b[1]=1.0/5.0;12 b[2]=1.0/7.0;13 b[3]=1.0/9.0;14 15 array<double,4>c={3.14,2.72,1.62,1.41};16 array<double,4>d;17 d=c;18 19 cout<<"a[2]:"<<a[2]<<" at "<<&a[2]<<endl;20 cout<<"b[2]:"<<b[2]<<" at "<<&b[2]<<endl;21 cout<<"c[2]:"<<c[2]<<" at "<<&c[2]<<endl;22 cout<<"d[2]:"<<d[2]<<" at "<<&d[2]<<endl;23 24 a[-2]=20.2;//危¡ê险?25 cout<<"a[-2]:"<<a[-2]<<" at "<<&a[-2]<<endl;26 cout<<"c[2]:"<<c[2]<<" at "<<&c[2]<<endl;27 cout<<"d[2]:"<<d[2]<<" at "<<&d[2]<<endl;28 29 return 0;30 }
a[-2]=20.2;
意思是a所指的位置向前移2个位,存储20.2,存储在数组外面。c++并不检查这种越界错误。这种行为是很危险的。
4.9,4.10
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。