64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
ostream_iterator<string> oo(cout);
istream_iterator<string> ii(cin);
istream_iterator<string> eos;
int main()
{
string from,to;
cin>>from>>to;
ifstream is(from.c_str());
istream_iterator<string>ii(is);
istream_iterator<string>eos;
vector<string>b(ii,eos);
sort(b.begin(),b.end());
ofstream os(to.c_str());
ostream_iterator<string>oo(os,"\n");
unique_copy(b.begin(),b.end(),00);
return !is.eof()|| !os;
}
:\program files\microsoft visual studio 10.0\vc\include\xutility(2227): warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
1> c:\program files\microsoft visual studio 10.0\vc\include\xutility(2212) : see declaration of 'std::_Copy_impl'
1> c:\documents and settings\administrator\my documents\visual studio 2010\projects\the c++ programming language\the c++ programming language\io.cpp(41) : see reference to function template instantiation '_OutIt std::copy<std::_Vector_iterator<_Myvec>,int>(_InIt,_InIt,_OutIt)' being compiled
1> with
1> [
1> _OutIt=int,
1> _Myvec=std::_Vector_val<std::string,std::allocator<std::string>>,
1> _InIt=std::_Vector_iterator<std::_Vector_val<std::string,std::allocator<std::string>>>
1> ]
1>c:\program files\microsoft visual studio 10.0\vc\include\xutility(2216): error C2665: 'std::_Copy_impl' : none of the 2 overloads could convert all the argument types
1> c:\program files\microsoft visual studio 10.0\vc\include\xutility(2182): could be '_OutIt std::_Copy_impl<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::input_iterator_tag,std::output_iterator_tag)'
1> with
1> [
1> _OutIt=int,
1> _InIt=std::basic_string<char,std::char_traits<char>,std::allocator<char>> *
1> ]
1> c:\program files\microsoft visual studio 10.0\vc\include\xutility(2191): or '_OutIt std::_Copy_impl<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::random_access_iterator_tag,std::random_access_iterator_tag)'
1> with
1> [
1> _OutIt=int,
1> _InIt=std::basic_string<char,std::char_traits<char>,std::allocator<char>> *
1> ]
1> while trying to match the argument list '(std::basic_string<_Elem,_Traits,_Ax> , std::basic_string<_Elem,_Traits,_Ax> , int, std::iterator_traits<_Iter>::iterator_category, std::iterator_traits<int>::iterator_category)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> and
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> and
1> [
1> _Iter=std::basic_string<char,std::char_traits<char>,std::allocator<char>> *
1> ]
1> c:\program files\microsoft visual studio 10.0\vc\include\xutility(2227) : see reference to function template instantiation '_OutIt std::_Copy_impl<std::basic_string<_Elem,_Traits,_Ax>*,_OutIt>(_InIt,_InIt,_OutIt,std::tr1::false_type)' being compiled
1> with
1> [
1> _OutIt=int,
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>,
1> _InIt=std::basic_string<char,std::char_traits<char>,std::allocator<char>> *
1> ]
1> c:\documents and settings\administrator\my documents\visual studio 2010\projects\the c++ programming language\the c++ programming language\io.cpp(41) : see reference to function template instantiation '_OutIt std::copy<std::_Vector_iterator<_Myvec>,int>(_InIt,_InIt,_OutIt)' being compiled
1> with
1> [
1> _OutIt=int,
1> _Myvec=std::_Vector_val<std::string,std::allocator<std::string>>,
1> _InIt=std::_Vector_iterator<std::_Vector_val<std::string,std::allocator<std::string>>>
1> ]
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.92
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
// unique_copy example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool myfunction (int i, int j) {
return (i==j);
}
int main () {
int myints[] = {10,20,20,20,30,30,20,20,10};
vector<int> myvector (9); // 0 0 0 0 0 0 0 0 0
vector<int>::iterator it;
// using default comparison:
it=unique_copy (myints,myints+9,myvector.begin()); // 10 20 30 20 10 0 0 0 0
// ^
sort (myvector.begin(),it); // 10 10 20 20 30 0 0 0 0
// ^
// using predicate comparison:
it=unique_copy (myvector.begin(), it, myvector.begin(), myfunction);
// 10 20 30 20 30 0 0 0 0
// ^
myvector.resize( it - myvector.begin() ); // 10 20 30
// print out content:
cout << "myvector contains:";
for (it=myvector.begin(); it!=myvector.end(); ++it)
cout << " " << *it;
cout << endl;
return 0;
}