stl学习之一

#pragma  once


#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <string>
#include <iterator>
#include <algorithm>


namespace myCopy
{
typedef std::vector<int> IntVector;

void fun()
{
IntVector iVec1, iVec2;
for (int i = 1; i < 24; ++i)
iVec1.push_back(i);


   /*
   copy 函数具有写功能,并没有安插功能
   copy(iVec1.begin(), iVec1.end(), iVec2.end());//error
   */


/*
copy(iVec1.begin(), iVec1.end(), front_inserter(iVec2));//error, vector不支持push_front()操作
*/


  /*
  copy(iVec1.begin(), iVec1.end(), back_inserter(iVec2));
  */


  /*
  copy(iVec1.begin(), iVec1.end(), inserter(iVec2, iVec2.end()));
  */


  copy(iVec1.begin(), iVec1.end(), inserter(iVec2, iVec2.begin()));


  for (int i = 0; i != iVec2.size(); ++i)
  {
  std::cout << iVec2[i] << std::endl;
  }
}
}


namespace myIo
{
typedef std::vector<std::string> StringVector;


//非常强大的功能
void fun()
{
StringVector strVec;
std::ifstream inFile("in.txt");
std::ofstream outFile("out.txt");
copy(std::istream_iterator<std::string>(inFile),
std::istream_iterator<std::string>(),
back_inserter(strVec));
unique_copy(strVec.begin(), strVec.end(),
       std::ostream_iterator<std::string>(outFile, " "));
}
}


namespace myList
{
typedef std::list<int> IntList;


void fun()
{
IntList List;
for (int i = 1; i < 7; ++i)
{
List.push_front(i);
List.push_back(i);
}


copy(List.begin(), List.end(),
std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl;


/*
remove(List.begin(), List.end(), 3); //并没有改变List的大小,只是将元素前移,覆盖
copy(List.begin(), List.end(),
std::ostream_iterator<int>(std::cout, " "));  std::cout << std::endl;
//output: 6 5 4 2 1 1 2 4 5 6 5 6 
        */


//彻底删除,List的大小改变
IntList::iterator Itend = remove(List.begin(), List.end(), 3); //返回删除后的end,
List.erase(Itend, List.end());
copy(List.begin(), List.end(),
std::ostream_iterator<int>(std::cout, " "));  std::cout << std::endl;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值