在C++中有些函数的容器范围是不定的,例如copy函数,指定数据源
范围后,目的容器只需要指定起始地址就可以将数据源的数据复制到目
的容器。然而,如果目的容器的容量不够,则会出现运行错误,例如:
解决的办法有两种:一是预先给目的容器分配比要复制的元素大的空间;二是
使用iterator适配器,如下代码所示:
iterator适配器有三种:back_inserter, front_inserter, inserter。
其中back_inserter使用push_back函数在容器末尾插入元素,front_inserter
使用push_front函数在容器的前面插入元素(需要容器成员函数有push_front,STL中
只有deque和list支持)。inserter则是普通的适配器,需要指定目的容器和要复制到目的
容器的起始位置。
上面代码的运行结果为:
此外在C++的STL中还有输入输出流适配器,可以通过该iterator适配器来复制文件或
标准输入中的数据到容器中,或将容器中的数据复制到文件或标准输出中,例如:
该程序中将读入标准输入流中的字符串并复制到col7的字符串向量中(注意结束符为
回车后按Ctrl+Z键后回车)。并将字符串向量的字符串输出到标准输出上。