本文共 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/