2015-07-17 4 views
-1

Я хочу поместить некоторые элементы в вектор. До сих пор я всегда использовал этот способ вставки элементов в вектор, и он всегда работал. Я не знаю, почему он сегодня не работает.Почему метод push_back vector не работает?

World::World() 
{ 
    collisionmap.loadFromFile("collisionmap.png"); 
    for(int i=0; i<collisionmap.getSize().y; i++) 
    { 
     for(int j=0; j<collisionmap.getSize().x; j++) 
     { 
      if(collisionmap.getPixel(j,i)==sf::Color(0,0,0)) 
      { 
        cout<<"test"<<endl //prints perfectly 
        collisionList.push_back(sf::FloatRect(j*32, i*32, 32, 32)); 
      } 
     } 
    } 
    cout<<collisionList.size(); //shows nothing 
} 

Edit:

Я забыл упомянуть: -

1.I я использую SFML.

2. collisionList - это вектор.

3. Этот код компилируется без проблем.

4. Размер карты столкновения не равен нулю collisionmap.getSize() возвращает точное значение.

+0

Это очень трудно выполнить отладку кода, когда он не компилируется или запустить: http://ideone.com/S5p9EH –

+0

Вы действительно должны упомянуть, что вы используете SFML. – VermillionAzure

+0

Что такое 'collisionList'? Какие размеры? Возможно, отладчик может помочь –

ответ

2
cout<<collisionList.size(); //shows nothing 

Конечно. Это просто помещает материал в буфер, на самом деле ничего не выводит. Попробуйте:

cout<<collisionList.size()<<endl; 
+0

Это сработало. Таким образом, вектор не был фактически пустым. Но почему раньше он не печатал? – arandomguy

+0

У вас не было кода для его печати. Вы просто помещаете что-то в буфер, а затем никогда не очищаете буфер для вывода. Компьютеры делают именно то, что вы им говорите. –

+0

так что положить endl в конце cout сбрасывает буфер? – arandomguy

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