#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;
}
}
#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;
}
}