博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 模板
阅读量:3961 次
发布时间:2019-05-24

本文共 3570 字,大约阅读时间需要 11 分钟。

.h 文件

#ifndef COMMONFUNCTION_H#define COMMONFUNCTION_H#include 
#include
#include
#include
using namespace std;extern const unsigned int SITE_NUMBER;/****************************SITE_INIT**********************************************/template
class SITE_TEMP {
private: vector
buffer;public: SITE_TEMP() { buffer.resize(SITE_NUMBER); } int size() { return int(buffer.size()); } T& operator[](int id) { if(id >= int(size())) { cerr << "Error: Site Number: " << dec << (id) << " is invalid!" << endl; ERROR_EXIT(TM::EXIT_FLOW); } return buffer[id]; } void clear() { for(uint i = 0;i < uint(size());i++) { buffer[i] = 0; } } void init(const T& val) { for(uint i = 0;i < uint(size());i++) { buffer[i] = val; } } void init(uint sizes, T val) { buffer.resize(sizes); for(uint i = 0;i < uint(size());i++) { buffer[i] = val; } }};void siteInitUt();template
class SITE_VECTOR_TEMP { private: vector
> buffer;public: SITE_VECTOR_TEMP() { buffer.resize(SITE_NUMBER); } SITE_VECTOR_TEMP(int sizes) { buffer.resize(SITE_NUMBER); for(uint i = 0;i < uint(buffer.size());i++) { buffer[i].resize(sizes); } } int size() //重写 { return uint(buffer.size()); } void push_back(int site, T val) { buffer[site].push_back(val); if(site >= int(size())) { cerr << "Error: Site Number: " << dec << (site) << " is invalid!" << endl; ERROR_EXIT(TM::ABORT_FLOW); } } vector
& operator[](uint id) //重载 { if(id >= uint(size())) { cerr << "Error: Site Number: " << dec << (id) << " is invalid!" << endl; ERROR_EXIT(TM::ABORT_FLOW); } return buffer[id]; }// double operator()(uint site, uint id)// { // if(site >= uint(size()))// { // cerr << "Error: Site Number: " << dec << (site ) << " is invalid!" << endl;// ERROR_EXIT(TM::ABORT_FLOW);// }// if(id >= buffer[site].size())// { // cerr << "Error: Site value Number: " << dec << (id ) << " is invalid!" << endl;// ERROR_EXIT(TM::ABORT_FLOW);// }// return buffer[site][id];// } void clear() { for(uint i = 0;i < uint(buffer.size());i++) { buffer[i].clear(); } } void init(uint sites, uint sizes, T val) { buffer.resize(sites); for(uint i = 0;i < uint(size());i++) { buffer[i].resize(sizes); for(uint j = 0;j < uint(buffer[i].size());j++) { buffer[i][j] = val; } } }};void sitevectorDoubleUt();template
class SITE_VECTOR_VECTOR_TEMP { private: vector
> > buffer;public: SITE_VECTOR_VECTOR_TEMP() { buffer.resize(SITE_NUMBER); } void push_back(int site, vector
val) { buffer[site].push_back(val); } int size() { return uint(buffer.size()); } vector
>& operator[](int id) { if(id >= uint(size())) { cerr << "Error: Site Number: " << dec << (id) << " is invalid!" << endl; ERROR_EXIT(TM::ABORT_FLOW); } return buffer[id]; } void clear() { for(uint i = 0;i < uint(buffer.size());i++) { buffer[i].clear(); } } void init(uint sites, uint sizesx, uint sizesy, T val) { buffer.resize(sites); for(uint i = 0;i < uint(size());i++) { buffer[i].resize(sizesx); for(uint j = 0;j < uint(buffer[i].size());j++) { buffer[i][j].resize(sizesy); for(uint k = 0;j < uint(buffer[i][j].size());k++) { buffer[i][j][k] = val; } } } }};void sitevectorDoubleUt();typedef SITE_TEMP
SITE_INT;typedef SITE_TEMP
SITE_DOUBLE;typedef SITE_TEMP
SITE_BOOL;typedef SITE_TEMP
SITE_BOOL;typedef SITE_TEMP
SITE_LONG_LONG;typedef SITE_VECTOR_TEMP
SITE_VECTOR_DOUBLE;typedef SITE_VECTOR_TEMP
SITE_VECTOR_LONG_LONG;typedef SITE_VECTOR_TEMP
SITE_VECTOR_LONG_LONG_P;typedef SITE_VECTOR_VECTOR_TEMP
SITE_VECTOR_VECTOR_INT;

.cpp 文件

//site的宽度可在这里实现const unsigned int SITE_NUMBER = GET_CONFIGURED_SITES(sites);

转载地址:http://lsmzi.baihongyu.com/

你可能感兴趣的文章