2012-06-13 2 views
2

Ниже в c++ программы,вектор :: push_back против вектора :: оператор []

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].
Похоже, вектор :: operator [] не увеличивает размер вектора, как вектор :: push_back.
так, Это единственная разница между этими двумя или что-то еще там?

+2

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

ответ

7

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

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

10

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

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

Я так удивителен, глядя на C++ ссылки. Тебе следует это попробовать.

+3

Этот сарказм победил меня. По крайней мере, я надеюсь, что это был сарказм ... – chris

Смежные вопросы