Нужно массиву double а[n] присвоить массив double b[n]. Как реализовать? Без цикла.
Голые массивы в С++ являются некопируемыми объектами. Они не копируются ни при инициализации, ни через присваивание. (На массивы, обернутые в классы и копируемые неявно и опосредованно вместе с классом, это ограничение не распространяется.)
Поэтому присвоить массив double а[n] массиву double b[n] у вас никак не получится. Либо явный цикл, либо скрытый цикл, типа memcpy, std::copy и т.п.
Разумеется настоящие "кул хацк0ры" не удержатся от соблазна предложить такое решение
int main()
{
const unsigned N = 100;
double a[N] = { 1, 2, 3 };
double b[N];
struct S
{
double a[N];
};
*(S *) b = *(S *) a;
}
но с точки зрения языка С++ такой код нарушает правила aliasing и его поведение не определено.
Внимание, этот код работает только для массивов, но не для указателей:
memcpy(b, a, sizeof a);
https://ideone.com/gaTiyU
#include <cstdio>
#include <memory.h>
using namespace std;
int main()
{
const unsigned N = 8;
double a[N] = { 1, 2, 3 };
double b[N];
memcpy(b, a, sizeof a);
for (unsigned q=0; q<N; ++q)
printf("%lf ", b[q]);
return 0;
}
Начиная с С++11 стандарта появилась новая реализация std::swap
template< class T2, size_t N >
void swap( T2 (&a)[N], T2 (&b)[N]);
Применение:
int a[] = {1,2,3};
int b[] = {4,5,6};
swap(a,b);
Важно, внутри всё равно будет полноценное копирование за O(n).
Из плюсов данного метода - можно использовать и для указателей.
ссылка
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости