我们如何在 C++ 中不编写显式循环的情况下添加两个相同大小的数组 例如:
int a[3]={1,2,3};
int b[3]={4,3,2};
int c[3]; //to contain sum of a and b
Run Code Online (Sandbox Code Playgroud)
如果一个显式循环是不可能的,那么使用一个可能的隐式循环。让标准库为您完成。
std::transform(a, a + 3, b, c, std::plus<int>{});
Run Code Online (Sandbox Code Playgroud)
如果您发现自己经常在相同大小的数组上执行此操作,您甚至可以对其进行模板化:
template<typename T, std::size_t N>
void add_arrays( T (const &a)[N], T (const &b)[N], T (&c)[N] ) {
std::transform(a, a + N, b, c, std::plus<T>{});
}
Run Code Online (Sandbox Code Playgroud)
编译器会很好并为您检查大小。你甚至不必停在那里。有很多方法add_arrays可以在更多上下文中使用。
说了这么多。尝试不再使用原始数组。std::array作为默认使用。它是原始数组的一个薄包装器,但它具有值语义。如果您出于某种目的需要固定的事物集合(假设您正在执行图形编程,因此您存储坐标),请尝试使用指定的类型来代替。