Arhn - архитектура программирования

vector::push_back vs vector::operator[]

Ниже в программе c++,

include<iostream>
#include<vector>
using namespace std;

int main()
{
     vector<int> numbers;

    numbers.push_back(2);
    numbers.push_back(10);
    numbers.push_back(5);
    numbers.push_back(3);
    numbers.push_back(7);

    numbers[3] = 8;
    numbers[5] = 11;

    for(int i=0; i<numbers.size(); ++i)
    {
            cout<<" "<<numbers[i];
    }
}    

см. на ideone.

здесь работает numbers[3], но numbers[5].
Похоже, vector::operator[] не увеличивает размер вектора, как vector::push_back.
Итак, это единственная разница между этими два или что-то еще есть?


  • В этом разница. Почему вы отвечаете на свой вопрос в вопросе? 13.06.2012

Ответы:


1

push_back создает новый элемент сзади с указанным значением. operator[] требует, чтобы элемент был там; он просто получает к нему доступ. Причина, по которой [5] не работает, заключается в том, что у вас есть 5 элементов, поэтому ваши индексы варьируются от 0 до 4.

Как правило, при добавлении новых элементов push_back предпочтительнее resize, за которым следует operator[]. Однако для чтения можно использовать только один, а operator[] также необходим для поддержания нормального синтаксиса массива.

13.06.2012

2

std::vector::operator[]: "доступ к указанному элементу "

std::vector::push_back: "добавляет элемент в конец"

Я так изумительно смотрю на ссылки С++. Тебе стоит попробовать это.

13.06.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..