• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Usuwanie pary z wektora

Object Storage Arubacloud
0 głosów
278 wizyt
pytanie zadane 7 grudnia 2016 w C i C++ przez niezalogowany

Witam, mam problem z usuwaniem pary z wektora. Mam oto taką parę

 

    std::vector<std::pair<Object, std::pair<float, float>>> m_objects;

a potem jedynie co z nim robię to próbuję usunąć tak:

for (auto itr = m_objects.begin(); itr != m_objects.end(); ++itr)
		{
			m_objects.erase(itr);	
		}

i wyskakuje błąd, które nie mogę się pozbyć:

Error    C2280    'Object&Object::operator =(const Object&)': attempting to reference a deleted function   

i wyrzuca mnie przy tym do pliku utility na 230 linię:

_Myt& operator=(_Myt&& _Right)
		_NOEXCEPT_OP((is_nothrow_move_assignable<_Ty1>::value
			&& is_nothrow_move_assignable<_Ty2>::value))
		{	// assign from moved pair
		first = _STD forward<_Ty1>(_Right.first); //do tego miejsca przenosi
		second = _STD forward<_Ty2>(_Right.second);
		return (*this);
		}



 

komentarz 7 grudnia 2016 przez plkpiotr Stary wyjadacz (12,420 p.)

A czy nie jest tak, że w pętli for próbujesz usuwać elementy, które są już usunięte? Bo np. weź ostatnią iterację, ostatni element znajdujący się przed końcem pętli już nie istnieje, a ty przypadkiem nie próbujesz go usunąć?

komentarz 7 grudnia 2016 przez niezalogowany
m_objects.end() wskazuje nie na ostatni element a "miejsce" po nim więc nie próbuję go usunąć
komentarz 7 grudnia 2016 przez plkpiotr Stary wyjadacz (12,420 p.)

Tak, tak to jasne... Chodziło mi o coś innego, ale to faktycznie nie powinno powodować błędu kompilacji, więc za mało wiem...

#include <iostream>
#include <vector>

int main () {
    std::vector<int> myvector;
    std::vector<int>::iterator it;
    for (int i = 0; i < 10; i++)
        myvector.push_back(i);
    for (it = myvector.begin(); it != myvector.end(); it++)
        myvector.erase(it);
    std::cout << "Vector:";
    for (unsigned int i = 0; i < myvector.size(); ++i)
        std::cout << ' ' << myvector[i];
    return 0;
}

Część elementów wektora pozostaje nadal...

1 odpowiedź

+1 głos
odpowiedź 7 grudnia 2016 przez unknown Nałogowiec (39,560 p.)
Pokaż kod klasy Object.
komentarz 7 grudnia 2016 przez niezalogowany
class Object: public Component
{
protected:
    const int m_ammountLettersInLine;
    const sf::Vector2i m_margins;

    sf::RectangleShape m_background;

    sf::Font *m_font;
    sf::Texture *m_texture;

    sf::Text m_text;
    
    void reScale();
    void createNewFont();

    void draw(sf::RenderTarget & target, sf::RenderStates states) const;

    
public:
    Object(std::string = "empty text", int = 20, sf::Vector2f = sf::Vector2f(300, 300), sf::Color = sf::Color::Red, sf::Font* = nullptr, sf::Texture* = nullptr, sf::Vector2i  = sf::Vector2i(25, 25));

    //Set a new text and rescale textbox
    void SetText(std::string arg);

    //VALUE -> <0;255>
    void SetTransparency(float arg);

};

 

Podobne pytania

0 głosów
1 odpowiedź 461 wizyt
pytanie zadane 11 października 2020 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
1 odpowiedź 5,701 wizyt
pytanie zadane 19 grudnia 2019 w C i C++ przez New_programmer Początkujący (340 p.)
0 głosów
0 odpowiedzi 638 wizyt
pytanie zadane 18 sierpnia 2021 w C i C++ przez magda_19 Gaduła (3,080 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...