您的位置:首页 > 编程语言 > Go语言

如何在Django模板中注入全局变量

2014-11-17 14:53 393 查看
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
template<typename T>
class comparator
{
public:
bool operator()(const T & p, const  T & q) const
{
return p < q;
}
};
template<typename E, typename C>
void mergeSort(vector<E> & S, const C & less)
{
typedef vector<E> vect;
int n=S.size();
vect v1(S); vect * in=&v1;
vect v2(n); vect * out=&v2;
for(int m=1; m<n; m*=2)
{
for(int b=0; b<n; b+=2*m)
merge(*in, *out, less, b, m);
swap(in,out);
}
S=*in;
}
template<typename E, typename C>
void merge(vector<E> & in, vector<E>& out, const C & less, int b, int m)
{
int k=b;
int n=in.size();
int key[4]={b, b+m, min(b+m,n), min(b+2*m,n)};
while( ( key[0] < key[2] ) && ( key[1] < key[3] ) )
{
if(less(in[key[0]],in[key[1]]))
out[k++]=in[key[0]++];
else
out[k++]=in[key[1]++];
}
for(int i=0; i!=2; ++i)
{
if( key[i] < key[i+2] )
out[k++]=in[key[i]++];
}
}
int main()
{
vector<int> V;
comparator<int> cmp;
int A[8]={3,-2,1,12,5,2,8,0};
copy(A, A+8, back_inserter(V));
mergeSort(V, cmp);
vector<int>::iterator p;
for(p=V.begin(); p!=V.end(); ++p)
cout<<*p<<" ";
cout<<endl;
return 0;
}
本文出自 “永夜” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: