std :: vector не является push_back-значениями в моем векторе? C ++ - PullRequest
0 голосов
/ 19 февраля 2020

вот мой код.

std::vector<int> x;
std::vector<int> y;

void vector_pile()
{
    if (x.size() > 0 && y.size() > 0)
    {
        // clear the x & y movement vectors so we can update it to the current movement vector
        x.clear();
        y.clear();
    }

    // set vector size
    x.resize(WeaponBulletCount());
    y.resize(WeaponBulletCount());

    // updates pattern to move vector to reduce strain on program calculations
    if (WeaponBulletCount() > 0) {
        for (int i = 0; i <= WeaponBulletCount(); i++)
        {           
            x.push_back(i);
            y.push_back(i);

            std::cout << "x: " << x[i] << std::endl;
            std::cout << "y: " << y[i] << std::endl;
        }
    }   
    Sleep(1000);
}

функция WeaponBulletCount(); возвращает значение 30. Основная причина для этой функции - иметь вектор, который можно изменить, если переменная изменится, таким образом уменьшая число повторяющиеся расчеты.

1 Ответ

0 голосов
/ 19 февраля 2020

Метод push_back добавляет новый элемент в конец контейнера (стереотипно для большинства контейнеров в стандартной библиотеке компонентов). Вы создали 30 элементов в каждом контейнере, затем добавили еще 30 элементов в свой l oop. x[i] это не элемент, который вы добавили, вы печатаете значения, которые вы создали с помощью resize.

Вы должны были использовать reserve, чтобы изменить емкость вектора (также стереотипный метод).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...