У меня одномерный массив инициализируется глобально в C ++
Gfloat cone1[] = { 0.0f, 2.4f, -11.0f, 30.0f, -1.5, 0.0, 0.0 };
Я хочу обновить все его значения различными номерами по своему выбору в основной функции, записав минимум / одну строку (-и) кода.
Является ли это возможным?
Я не хочу делать, как: —
cone1[0] = 12f , cone1[1] = 56f; ...
Если вы готовы перейти на использование 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 };
}
Если у вас есть значения, которые вы хотите заменить в другом массиве, вы можете использовать std :: copy:
std::copy(newCone, newCone + 7, cone1);
Если вы хотите сделать это в одну строку, то в одну строку:
cone1[0] = 12f; cone1[1] = 56f; ... // and so on
Делать все это в одной строке / нацеливая на минимальный код, хотя это не делает его более эффективным — читаемый код на нескольких строках лучше, чем плотно упакованный код, который занимает меньше места в файле.
Я решил свою проблему, как предложил @Captain Obvlious.
замещать -c -fmessage-length = 0 с -c -fmessage-length = 0 -std = c ++ 11
Убедитесь, что вы оставляете пространство между -c -fmessage-length = 0 а также -станд = C ++ 11
В противном случае ваш проект покажет, что это сборка, но не создаст файл .exe.