c++primer学习笔记(3.3)标准库vector类型
2012-02-24 19:23
405 查看
3.3标准库vector类型
#include<vector>
using std::vector;
vector不是一种数据类型,它是一种类模版。
初始化vector对象的方法:
vector<int> ivec1; //ivec保存类型为int型,默认构造函数
vector<int> ivec2(iver1); //ivec2是ivec1的一个副本,ivec2必须和ivec1是相同类型的!!
vector<int> ivec3(n,i); //ivec3含有n个i的元素
vector<int> ivec4(n); //ivec4含有初始化元素的n个副本
vector对象元素的快速增加:先初始化一个空的vector对象,然后再动态的添加元素!
几种重要的vector对象的操作:
v.empty() 如果v为空,则返回true,否则返回false.
v.size() 返回v中元素的个数
v.push_back(t) 在v的末尾增加一个值为t的元素.
v
返回v中位置为n的元素.
v1=v2 把v1的元素替换成v2中元素的副本.
v1==v2 如果v1与v2相等,则返回true.
!=,<,<=,>,>= 保持这些操作符惯有的含义
注意:v.size()返回值是size_type类型的!!同s.size一样!!
Vector<int>::size_type //just like string::size_type
一个使用push_back(t)的案例:
注意:c++未定义cin>>res与cout<<res(res为一个vector<string>类型)的行为,故采用一个一个字符输出的形式
vector的下标操作
for(vector<int>::size_type index=0;index!=s.size();index++)
s[index]=0;
vector的下标操作不会添加新的元素;只有已经存在的元素才有可能被索引!!
“缓冲区溢出”错误就是对不存在的元素进行下标操作的结果!
习题3.13
改动后:
习题3.14
习题3.15
几种定义vector的方法:
Method1:vector<int> vec(10,42);
Method2: vector<int> vec(10);
for(vector<int>::size_type index;index!=vec.size();index++){
vec[index]=42;
}
Method3:vector<int> vec;
for(vector<int>::size_type index;index!=10;index++){
vec.push_back(42);
}
vector容器的begin() ,end(), rbegin(), rend()。
begin返回第一个元素的地址,end返回最后一个元素后一个的地址。
rbegin返回最后一个元素的地址,rend返回第一个元素前面的地址。
#include<vector>
using std::vector;
vector不是一种数据类型,它是一种类模版。
初始化vector对象的方法:
vector<int> ivec1; //ivec保存类型为int型,默认构造函数
vector<int> ivec2(iver1); //ivec2是ivec1的一个副本,ivec2必须和ivec1是相同类型的!!
vector<int> ivec3(n,i); //ivec3含有n个i的元素
vector<int> ivec4(n); //ivec4含有初始化元素的n个副本
vector对象元素的快速增加:先初始化一个空的vector对象,然后再动态的添加元素!
几种重要的vector对象的操作:
v.empty() 如果v为空,则返回true,否则返回false.
v.size() 返回v中元素的个数
v.push_back(t) 在v的末尾增加一个值为t的元素.
v
返回v中位置为n的元素.
v1=v2 把v1的元素替换成v2中元素的副本.
v1==v2 如果v1与v2相等,则返回true.
!=,<,<=,>,>= 保持这些操作符惯有的含义
注意:v.size()返回值是size_type类型的!!同s.size一样!!
Vector<int>::size_type //just like string::size_type
一个使用push_back(t)的案例:
#include <iostream> #include<string> #include<vector> using namespace std; int main(){ string word; vector<string> res; while(cin>>word){ res.push_back(word); } for(vector<string>::size_type index=0;index!=res.size();index++){ cout<<res[index]; } cout<<endl; return 0; }
注意:c++未定义cin>>res与cout<<res(res为一个vector<string>类型)的行为,故采用一个一个字符输出的形式
vector的下标操作
for(vector<int>::size_type index=0;index!=s.size();index++)
s[index]=0;
vector的下标操作不会添加新的元素;只有已经存在的元素才有可能被索引!!
“缓冲区溢出”错误就是对不存在的元素进行下标操作的结果!
习题3.13
#include <iostream> #include <vector> using namespace std; int main() { vector<int> ivec; int ival; cout<<"input numbers(ctrl+z to end):"<<endl; while(cin>>ival) ivec.push_back(ival); if(ivec.size()==0){ cout<<"no elements!"<<endl; return -1; } cout<<"sume of each pair of adjacent elements in the vector:"<<endl; for(vector<int>::size_type index=1;index!=ivec.size();index=index+2){ cout<<ivec[index-1]+ivec[index]<<" "; } if(ivec.size()%2!=0) cout<<"The last element is not been summed" <<",the value is "<<ivec[ivec.size()-1]<<endl; return 0; }
改动后:
#include <iostream> #include <vector> using namespace std; int main() { vector<int> ivec; int ival; cout<<"input numbers(ctrl+z to end):"<<endl; while(cin>>ival) ivec.push_back(ival); if(ivec.size()==0){ cout<<"no elements!"<<endl; return -1; } cout<<"sume of each pair of adjacent elements in the vector:"<<endl; for(vector<int>::size_type index=0;index!=ivec.size()/2;index++){ cout<<ivec[index]+ivec[ivec.size()-1-index]<<" "; } if(ivec.size()%2!=0) cout<<"The midddle element is not been summed" <<",it's value is "<<ivec[ivec.size()/2]<<endl; return 0; }
习题3.14
#include<iostream> #include<vector> #include<string> using namespace std; int main(){ vector<string> vec; string val; while(cin>>val) vec.push_back(val); if(vec.empty()){ cout<<"no data!"<<endl; return -1; } for(vector<string>::size_type index=0;index!=vec.size();index++){ for(vector<string>::size_type inx=0;inx!=vec[index].size();inx++) vec[index][inx]=toupper(vec[index][inx]); cout<<vec[index]<<" "; if((index+1)%8==0) cout<<endl; } return 0; }
习题3.15
几种定义vector的方法:
Method1:vector<int> vec(10,42);
Method2: vector<int> vec(10);
for(vector<int>::size_type index;index!=vec.size();index++){
vec[index]=42;
}
Method3:vector<int> vec;
for(vector<int>::size_type index;index!=10;index++){
vec.push_back(42);
}
vector容器的begin() ,end(), rbegin(), rend()。
begin返回第一个元素的地址,end返回最后一个元素后一个的地址。
rbegin返回最后一个元素的地址,rend返回第一个元素前面的地址。
#include <iostream> #include <vector> using namespace std; int main() { int n; vector<int> v; cout<<"input some numbers:"<<endl;; while(cin>>n){ v.push_back(n); } cout<<"正序:"<<endl; for(vector<int>::iterator iter=v.begin();iter<v.end();++iter){ cout<<*iter<<endl; } cout<<"逆序:"<<endl; for(vector<int>::reverse_iterator iter=v.rbegin();iter!=v.rend();++iter){ //注意此处时++iter!! cout<<*iter<<endl; } return 0; }
相关文章推荐
- 第一部分 基本语言 第三章 标准库类型(3.3标准库vector类型)
- c++primer学习笔记-----3.3标准库类型vector
- 第一部分 基本语言 第三章 标准库类型(3.3标准库vector类型)
- c++primer笔记--3.3标准库类型vector
- 20110330-3.3-waring-标准库vector类型
- C++primer 3.3 标准库类型 vector
- 3.3 标准库vector类型
- 【C++ Primer每日刷】四 标准库类型vector
- 标准库vector类型和迭代器iterator类型
- linux & C++Primer 学习笔记--标准库vector类型
- 第三章 标准库string、vector、bitset类型 —— 第一节 标准库string类
- 第三章 标准库string、vector、bitset类型 —— 第二节 vector类及其迭代器
- C++Primer学习笔记3 标准库类型
- 标准库类型vector
- 标准库vector类型
- 【C++ Primer】标准库vector类型
- 标准库 vector 类型
- 标准库vector类型
- C++ Primer_4th学习笔记(7)- 标准库 vector 类型
- c++primer学习笔记(3.2)标准库string类型