ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
global_function-func_each_2.h
Go to the documentation of this file.
1// AUTHOR: Peize Lin
2// Date: 2016-09-07
3
4#ifndef FUNC_EACH_2_H
5#define FUNC_EACH_2_H
6
7#include <functional>
8#include <map>
9#include <vector>
10
11namespace ModuleBase
12{
13namespace GlobalFunc
14{
15
16template<typename Ti, typename... T_tail>
18 Ti & tA,
19 const Ti & tB,
20 std::function< void( Ti&, const Ti&, T_tail... ) > func,
21 const T_tail&... t_tail )
22{
23 func( tA, tB, t_tail... );
24}
25
26
27template<typename Tv, typename Ti, typename... T_tail>
29 std::vector<Tv> & tA,
30 const std::vector<Tv> & tB,
31 std::function< void( Ti&, const Ti&, T_tail... ) > func,
32 const T_tail&... t_tail )
33{
34 for( size_t i=0; i!=tA.size(); ++i )
35 {
36 FUNC_EACH_2( tA[i], tB[i], func, t_tail... );
37 }
38}
39
40
41template<typename T1, typename T2, typename Ti, typename... T_tail>
43 std::map<T1,T2> & tA,
44 const std::map<T1,T2> & tB,
45 std::function< void( Ti&, const Ti&, T_tail... ) > func,
46 const T_tail&... t_tail )
47{
48 for( auto & ta : tA )
49 {
50 FUNC_EACH_2( ta.second, tB.at(ta.first), func, t_tail... );
51 }
52}
53
54}
55}
56#endif // FUNC_EACH_2_H
void FUNC_EACH_2(Ti &tA, const Ti &tB, std::function< void(Ti &, const Ti &, T_tail...) > func, const T_tail &... t_tail)
Definition global_function-func_each_2.h:17
Definition array_pool.h:6
double func(const Vec3 &r, const std::vector< Vec3 > &R, const std::vector< double > &a, const std::vector< double > &n)
Definition test_partition.cpp:50