sort 排序
#include<iostream>
#include<string>
#include<vector>
using namespace std;
template<class T>
void sort(T& input) {
int l = input.size();
for (int beg = l - 1; beg > 0; --beg)
for (int i = 0; i < beg; ++i)
if (input[i] > input[i + 1])
swap(input[i], input[i + 1]);
for (auto i : input)
cout << i << "\n";
}
int main() {
vector<int> a{ 1,6,3,2,8,9 };
sort(a);
vector<double> b{ 1.1,1.2,1.6,1.5,1.8 };
sort(b);
string s = "1987634";
sort(s);
system("Pause");
return 0;
}
find_all的实现
#include<iostream>
#include<string>
#include<vector>
#include<list>
using namespace std;
template<class T1,class T2>
vector<typename T1::iterator>
find_all(T1& input, const T2& val) {
vector<typename T1::iterator> res;
//T* head = &res;
for (auto it = input.begin(); it != input.end(); ++it) {
if (*it == val)
{ res.push_back(it); }
}
return res;
}
void test() {
string m { "mary had a little lamb" };
for (auto p : find_all(m, 'a'))
if (*p != 'a')
cerr << "string bug!\n";
else
cout << "string is no bug!!" << endl;
list<double> ld { 1.1,2.2,3.3,1.1 };
for (auto p : find_all(ld, 1.1))
if (*p != 1.1)
cerr << "list bug!\n";
else
cout <<"list is no bug!!" << endl;
vector<string> vs { "red","blue","green","green","orange","green" };
for (auto p :find_all(vs,"red"))
if(*p != "red")
cerr << "vector bug!\n";
else
cout << "vector<list> is no bug!!" << endl;
for (auto p : find_all(vs, "green")) {
*p = "vert";
cout << "this is vs gree"<<*p << endl;
}
}
int main() {
test();
system("Pause");
return 0;
}
这里主要是学会使用这个T::iterator 来访问容器元素的类型,加一个typename 来告诉编译器这是一个类型名称。