# Interaction with CLEF expressions¶

• The containers and their view classes can be used with the [triqs/clef] Clef: Compile-time lazy expressions and functions library:
• Using the CLEF library offers a quick and efficient way to fill an array with multiple advantages:
• It is simpler and more readeable than a series of for loops.
• It is usually more optimal since the for loops are automatically written in the TraversalOrder of the array.
• Example:
#include <triqs/arrays.hpp>
using triqs::arrays::array;
using triqs::clef::placeholder;
int main() {
placeholder<0> i_;
placeholder<1> j_;
array<double, 2> A(2, 2), B(2, 2);

A(i_, j_) << i_ + 2 * j_;
B(i_, j_) << A(j_, i_) / 2;

std::cout << "A = " << A << std::endl;
std::cout << "B = " << B << std::endl;
}
---------- Result is -------
A =
[[0,2]
[1,3]]
B =
[[0,0.5]
[1,1.5]]


Note

The syntax uses a <<, not = since the array is not assigned to an expression but filled by the evaluation thereof.