本文整理汇总了C++中function类的典型用法代码示例。如果您正苦于以下问题:C++ function类的具体用法?C++ function怎么用?C++ function使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了function类的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: integrate
double integrate(function f, double a, double b, double epsilon, int rdepth) {
/* Berechnet die erste Naeherung nach Simpson fuer das Intervall [a,b] */
double h = b - a;
double mid = 0.5 * (a + b);
double fa = f.func(a, f.args);
double fmid = f.func(mid, f.args);
double fb = f.func(b, f.args);
double simp = (fa + 4*fmid + fb) * h / 6;
/* Leitet die Rekursion ein. Dabei werden alle schon berechneten Funktions-
* werte weitergegeben, damit die Anzahl der Funktionsaufrufe minimiert wird.
* Es wird auch der aktuelle Wert des Integrals ueberreicht, damit verglichen
* werden kann, welchen Einfluss die Verfeinerung auf das Ergebnis hat */
return recursive_simpson(f, simp, a, mid, b, fa, fmid, fb, epsilon, rdepth);
}
开发者ID:chrisieh,项目名称:numerik,代码行数:17,代码来源:numerik_bespin_deutsch_mathfunctions.c
示例2: update_points
bool QGraph::addFunction(const function& func){
bool exist=false;
QTime t;
for (QValueList<function>::iterator it = funclist.begin(); it != funclist.end() && !exist; ++it ){
if((*it).expression() == func.expression()){
exist=true;
(*it)=func;
}
}
if(!exist)
funclist << func;
update_points();
this->repaint(false);
sendStatus(i18n("%1 function added").arg(func.expression()));
return exist;
}
开发者ID:BackupTheBerlios,项目名称:kalgebra-svn,代码行数:18,代码来源:qgraph.cpp
示例3: is_equal
bool remember_table_entry::is_equal(function const & f) const
{
GINAC_ASSERT(f.seq.size()==seq.size());
if (f.gethash()!=hashvalue) return false;
size_t num = seq.size();
for (size_t i=0; i<num; ++i)
if (!seq[i].is_equal(f.seq[i])) return false;
++last_access = access_counter;
++successful_hits;
return true;
}
开发者ID:aaditya-thakkar,项目名称:pynac,代码行数:11,代码来源:remember.cpp
示例4: SimpleEnumFolder
/**
* 简单的枚举文件夹内容,返回内容数量
*/
int SimpleEnumFolder(LPCTSTR lpszPath // 文件夹路径
, CShellManager* pShellManager // Shell管理器
, function<void(LPITEMIDLIST)> filter) // 过滤器函数
{
ENSURE(lpszPath != nullptr);
ASSERT_VALID(pShellManager);
AFX_SHELLITEMINFO info;
HRESULT hr = pShellManager->ItemFromPath(lpszPath, info.pidlRel);
if (FAILED(hr)) {
return 0;
}
int nFolderCount = 0;
LPSHELLFOLDER pDesktopFolder;
hr = SHGetDesktopFolder(&pDesktopFolder);
if (SUCCEEDED(hr)) {
IShellFolder* psfCurFolder = nullptr;
hr = pDesktopFolder->BindToObject(info.pidlRel, nullptr, IID_IShellFolder, (LPVOID*)&psfCurFolder);
LPENUMIDLIST pEnum = nullptr;
HRESULT hRes = psfCurFolder->EnumObjects(nullptr, (SHCONTF)(SHCONTF_FOLDERS), &pEnum);
if (SUCCEEDED(hRes) && pEnum != nullptr) {
DWORD dwFetched = 1;
LPITEMIDLIST pidlTemp;
while (pEnum->Next(1, &pidlTemp, &dwFetched) == S_OK && dwFetched) {
if (!filter._Empty()) {
LPITEMIDLIST itemID = pShellManager->ConcatenateItem(info.pidlRel, pidlTemp);
filter(itemID);
pShellManager->FreeItem(itemID);
}
pShellManager->FreeItem(pidlTemp);
nFolderCount++;
dwFetched = 0;
}
pEnum->Release();
}
psfCurFolder->Release();
pDesktopFolder->Release();
}
pShellManager->FreeItem(info.pidlRel);
return nFolderCount;
}
开发者ID:lvan100,项目名称:DataMag,代码行数:56,代码来源:Search.cpp
示例5: find_root
int find_root(function f, double x1, double x2, double epsilon, double *root) {
/* Es wird davon ausgegangen, dass eine Nullstelle mit Vorzeichenwechsel
* im Intervall [x1,x2] vorliegt und die Funktion stetig ist. Es werden die
* Funktionswerte am Rand und in der Mitte des Intervalls berechnet */
double f1, f2;
double mid, fmid;
f1 = f.func(x1, f.args);
f2 = f.func(x2, f.args);
/* Ueberpruefung ob das Intervall sinnvoll gewaehlt wurde */
if (f1 * f2 > 0) {
return 1;
}
/* Bisektion solange bis die Nullstelle mit einem absoluten Fehler <= epsilon
* bestimmt wurde. */
while (fabs(f1 - f2) > epsilon) {
mid = 0.5 * (x1 + x2);
fmid = f.func(mid, f.args);
/* Bisektion: das Intervall wurde halbiert und der Funktionswert der Mitte
* berechnet. Einige Faelle (Rest analog):
* Fall (+,+,-): Die Nullstelle liegt im rechten Teilintervall
* Fall (+,-,-): Die Nullstelle liegt im linken Teilintervall */
if (f1 * fmid > 0) {
x1 = mid;
f1 = fmid;
} else {
x2 = mid;
f2 = fmid;
}
}
*root = 0.5 * (x1 + x2);
return 0;
}
开发者ID:chrisieh,项目名称:numerik,代码行数:37,代码来源:numerik_bespin_deutsch_mathfunctions.c
示例6: recursive_simpson
double recursive_simpson(function f, double prev_simp,
double x0, double x1, double x2,
double f0, double f1, double f2,
double epsilon, int rdepth) {
/* Wir haben zwei Intervalle [x0,x1] und [x1,x2] mit den Funktionswerten f0,
* f1 und f2. Es wird die naechste Verfeinerung nach Simpson berechnet. */
double h = x1 - x0;
/* Berechne den Beitrag des Intervalls [x0,x1] zum Integral, dazu muss die
* Stuetzstelle in der Haelfte des Intervalls berechnet werden: */
double x01 = 0.5 * (x0 + x1);
double f01 = f.func(x01, f.args);
double simp01 = (f0 + 4*f01 + f1) * h / 6;
/* Berechne den Beitrag des Intervalls [x1,x2] zum Integral: */
double x12 = x01 + h;
double f12 = f.func(x12, f.args);
double simp12 = (f1 + 4*f12 + f2) * h / 6;
/* Neue Abschaetzung des Integrals: */
double simp = simp01 + simp12;
/* Rekursionszaehler */
rdepth--;
/* Vergleich des neuen Schaetzwertes mit dem Alten. Sollte die Differenz
* groesser als epsilon sein, werden die Intervalle halbiert und der Prozess
* erneut auf die halbierten Intervalle durchgefuehrt. */
if (rdepth > 0 && fabs(prev_simp - simp) > epsilon) {
return recursive_simpson(f, simp01, x0, x01, x1, f0, f01, f1, 0.5*epsilon, rdepth)
+ recursive_simpson(f, simp12, x1, x12, x2, f1, f12, f2, 0.5*epsilon, rdepth);
} else {
return simp;
}
}
开发者ID:chrisieh,项目名称:numerik,代码行数:36,代码来源:numerik_bespin_deutsch_mathfunctions.c
示例7: logic_error
dnnPSO_optimized_function<T>::dnnPSO_optimized_function(neuralnetwork<T>& nn,
const dataset<T>* input,
const function<std::vector< math::vertex<T> >,T>& dist)
{
this->testnet = new neuralnetwork<T>(nn);
this->input = input;
this->pseudodist = dist.clone();
{
math::vertex<T> v;
if(this->testnet->exportdata(v) == false)
throw std::logic_error("bad neural network parameter/copy");
this->fvector_dimension = v.size();
}
}
开发者ID:cslr,项目名称:dinrhiw2,代码行数:18,代码来源:dnnPSO.cpp
示例8: swap
inline void swap(function<Signature>& f1, function<Signature>& f2)
{
f1.swap(f2);
}
开发者ID:Yalir,项目名称:Awl,代码行数:4,代码来源:function_fwd.hpp
示例9: swap
inline void swap(function<Signature, Allocator>& f1,
function<Signature, Allocator>& f2)
{
f1.swap(f2);
}
开发者ID:BackupTheBerlios,项目名称:pyasynchio-svn,代码行数:5,代码来源:function_base.hpp
示例10: lookup_entry
bool remember_table::lookup_entry(function const & f, ex & result) const
{
long entry = f.gethash() & (table_size-1);
GINAC_ASSERT(entry<size());
return operator[](entry).lookup_entry(f,result);
}
开发者ID:aaditya-thakkar,项目名称:pynac,代码行数:6,代码来源:remember.cpp
示例11: CreateJob
void TaskManager :: CreateJob (const function<void(TaskInfo&)> & afunc,
int antasks)
{
if (num_threads == 1 || !task_manager || func)
{
if (startup_function) (*startup_function)();
TaskInfo ti;
ti.ntasks = antasks;
ti.thread_nr = 0; ti.nthreads = 1;
// ti.node_nr = 0; ti.nnodes = 1;
for (ti.task_nr = 0; ti.task_nr < antasks; ti.task_nr++)
afunc(ti);
if (cleanup_function) (*cleanup_function)();
return;
}
trace->StartJob(jobnr, afunc.target_type());
func = &afunc;
ntasks.store (antasks); // , memory_order_relaxed);
ex = nullptr;
nodedata[0]->start_cnt.store (0, memory_order_relaxed);
jobnr++;
for (int j = 0; j < num_nodes; j++)
nodedata[j]->participate |= 1;
if (startup_function) (*startup_function)();
int thd = 0;
int thds = GetNumThreads();
int mynode = num_nodes * thd/thds;
IntRange mytasks = Range(int(ntasks)).Split (mynode, num_nodes);
NodeData & mynode_data = *(nodedata[mynode]);
TaskInfo ti;
ti.nthreads = thds;
ti.thread_nr = thd;
// ti.nnodes = num_nodes;
// ti.node_nr = mynode;
try
{
while (1)
{
int mytask = mynode_data.start_cnt++;
if (mytask >= mytasks.Size()) break;
ti.task_nr = mytasks.First()+mytask;
ti.ntasks = ntasks;
{
RegionTracer t(ti.thread_nr, jobnr, RegionTracer::ID_JOB, ti.task_nr);
(*func)(ti);
}
}
}
catch (Exception e)
{
{
lock_guard<mutex> guard(copyex_mutex);
delete ex;
ex = new Exception (e);
mynode_data.start_cnt = mytasks.Size();
}
}
if (cleanup_function) (*cleanup_function)();
for (int j = 0; j < num_nodes; j++)
if (workers_on_node[j])
{
while (complete[j] != jobnr)
_mm_pause();
}
func = nullptr;
if (ex)
throw Exception (*ex);
trace->StopJob();
}
开发者ID:ddrake,项目名称:ngsolve,代码行数:91,代码来源:taskmanager.cpp
示例12: hashvalue
remember_table_entry::remember_table_entry(function const & f, ex r)
: hashvalue(f.gethash()), seq(f.seq), result(std::move(r))
{
++last_access = access_counter;
successful_hits = 0;
}
开发者ID:aaditya-thakkar,项目名称:pynac,代码行数:6,代码来源:remember.cpp
示例13: add_entry
void remember_table::add_entry(function const & f, ex const & result)
{
long entry = f.gethash() & (table_size-1);
GINAC_ASSERT(entry<size());
operator[](entry).add_entry(f,result);
}
开发者ID:aaditya-thakkar,项目名称:pynac,代码行数:6,代码来源:remember.cpp
示例14: is_empty_function
bool is_empty_function(function<Sig, IArchive, OArchive> const& f)
{
return f.empty();
}
开发者ID:41i,项目名称:hpx,代码行数:4,代码来源:function_template.hpp
示例15: check
bool check() {
if(active) {
if(!time_left()) {
if(!callback.empty()) {
callback();
callback.clear();
}
active = false;
return true;
}
}
return false;
}
开发者ID:stdk,项目名称:u2,代码行数:13,代码来源:blockwise_impl.cpp
示例16: set_parameter_values
void GaussianPDF::set_parameter_values(ConstVecRef values)
{
verify_set_parameter_values(values, "GaussianPDF");
assign_parameters(values, x0_, s_);
}
开发者ID:sfegan,项目名称:calin,代码行数:5,代码来源:pdf_1d_gaussian.cpp
示例17: cancel
void cancel() {
active = false;
callback.clear();
}
开发者ID:stdk,项目名称:u2,代码行数:4,代码来源:blockwise_impl.cpp
注:本文中的function类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论