Обновить несколько местоположений одномерного массива с минимумом / одной строкой кода

У меня одномерный массив инициализируется глобально в C ++

Gfloat cone1[] = { 0.0f, 2.4f, -11.0f, 30.0f, -1.5, 0.0, 0.0 };

Я хочу обновить все его значения различными номерами по своему выбору в основной функции, записав минимум / одну строку (-и) кода.

Является ли это возможным?

Я не хочу делать, как: —

cone1[0] = 12f , cone1[1] = 56f; ...

0

Решение

Если вы готовы перейти на использование std::vector или же std::array Вы можете использовать единую инициализацию и присваивание.

В следующем примере используется std::vector для массива переменного размера.

#include <vector>

int main()
{
std::vector<Gfloat> cone1 { 0.0f, 2.4f, -11.0f };

cone1 = { 30.0f, -1.5, 0.0 };
}

В следующем примере используется std::array для массива фиксированного размера.

#include <array>

int main()
{
std::array<Gfloat, 3> cone1 { 0.0f, 2.4f, -11.0f };

cone1 = { 30.0f, -1.5, 0.0 };
}
1

Другие решения

Если у вас есть значения, которые вы хотите заменить в другом массиве, вы можете использовать std :: copy:

std::copy(newCone, newCone + 7, cone1);
1

Если вы хотите сделать это в одну строку, то в одну строку:

cone1[0] = 12f; cone1[1] = 56f; ... // and so on

Делать все это в одной строке / нацеливая на минимальный код, хотя это не делает его более эффективным — читаемый код на нескольких строках лучше, чем плотно упакованный код, который занимает меньше места в файле.

1

Я решил свою проблему, как предложил @Captain Obvlious.

замещать -c -fmessage-length = 0 с -c -fmessage-length = 0 -std = c ++ 11

Убедитесь, что вы оставляете пространство между -c -fmessage-length = 0 а также -станд = C ++ 11

В противном случае ваш проект покажет, что это сборка, но не создаст файл .exe.

0
По вопросам рекламы [email protected]