atm每次取款显示:std::vector与std::map的用法

来源:百度文库 编辑:中财网 时间:2024/05/08 12:24:39
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

Vector的函数

c.assign(beg,end)
将[beg; end)区间中的数据赋值给c。

c.assign(n,elem)
将n个elem的拷贝赋值给c。

c.at(idx)
传回索引idx所指的数据,如果idx越界,抛出out_of_range。

c.back()
传回最后一个数据,不检查这个数据是否存在。

c.begin()
传回迭代器中的一个数据。

c.capacity()
返回容器中数据个数。

c.clear()
移除容器中所有数据。

c.empty()
判断容器是否为空。

c.end()
指向迭代器中的最后一个数据地址。

c.erase(pos)
删除pos位置的数据,传回下一个数据的位置。

c.erase(beg,end)
删除[beg,end)区间的数据,传回下一个数据的位置。

c.front()
传回地一个数据。

get_allocator
使用构造函数返回一个拷贝。

c.insert(pos,elem)
在pos位置插入一个elem拷贝,传回新数据位置。

c.insert(pos,n,elem)
在pos位置插入n个elem数据。无返回值。

c.insert(pos,beg,end)
在pos位置插入在[beg,end)区间的数据。无返回值。

c.max_size()
返回容器中最大数据的数量。

c.pop_back()
删除最后一个数据。

c.push_back(elem)
在尾部加入一个数据。

c.rbegin()
传回一个逆向队列的第一个数据。

c.rend()
传回一个逆向队列的最后一个数据的下一个位置。

c.resize(num)
重新指定队列的长度。

c.reserve()
保留适当的容量。

c.size()
返回容器中实际数据的个数。

 

      std::map是一个很常用的标准容器,采用红黑树或者平衡二叉树来储存节点内容,具有对数复杂度的插入时间和查找时间。这里简单说下它的一些值得注意的关注点。

1 定义
map my_Map;
或者是typedef map MY_MAP;
MY_MAP my_Map;

2 插入数据
(1) my_Map["a"] = 1;
(2) my_Map.insert(map::value_type("b",2));
(3) my_Map.insert(pair("c",3));
(4) my_Map.insert(make_pair("d",4));

3 查找数据和修改数据
(1) int i = my_Map["a"];
my_Map["a"] = i;
(2) MY_MAP::iterator my_Itr;
my_Itr.find("b");
int j = my_Itr->second;
my_Itr->second = j;
不过注意,键本身是不能被修改的,除非删除。

4 删除数据
(1) my_Map.erase(my_Itr);
(2) my_Map.erase("c");
还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。

5 迭代数据
for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr) {}

6 其它方法
my_Map.size() 返回元素数目
my_Map.empty() 判断是否为空
my_Map.clear() 清空所有元素
可以直接进行赋值和比较:=, >, >=, <, <=, != 等等