Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

<vector> jak poprawnie użyć funkcji erase() dla std::vector *

Ostatnio zmodyfikowano 2014-08-30 22:51
Autor Wiadomość
fokusx
Temat założony przez niniejszego użytkownika
<vector> jak poprawnie użyć funkcji erase() dla std::vector *
» 2014-08-30 21:09:41
C/C++
#include <vector>
void main()
{
    std::vector < int > tmp[ 3 ];
   
    tmp[ 0 ].push_back( 10 );
    tmp[ 0 ].push_back( 11 );
    tmp[ 0 ].push_back( 12 );
    tmp[ 1 ].push_back( 20 );
    tmp[ 2 ].push_back( 30 );
    BYTE i = 2;
    tmp[ 0 ].erase( 0, i ); // tu jest błąd
}

Jak poprawnie użyć funkcji erase (int, BYTE) w tym przypadku?
P-116409
Monika90
» 2014-08-30 21:30:10
A co chcesz usunąć?
P-116412
1aam2am1
» 2014-08-30 21:58:08
Jak już
C/C++
tmp.erase( 0, i ); //usuwa od pozycji 0 do pozycji i (liczac od 1)
P-116416
fokusx
Temat założony przez niniejszego użytkownika
» 2014-08-30 22:04:00
@UP & 2xUP
 z tablicy tmp[0] chcę usunąć przedział od 1 do i.




Treść błędu:

error C2664: 'std::_Vector_iterator<_Myvec> std::vector<_Ty>::erase(std::_Vector_const_iterator<_Myvec>,std::_Vector_const_iterator<_Myvec>)' : cannot convert parameter 1 from 'int' to 'std::_Vector_const_iterator<_Myvec>'
1>          with
1>          [
1>              _Myvec=std::_Vector_val<int,std::allocator<int>>,
1>              _Ty=int
1>          ]
1>          and
1>          [
1>              _Myvec=std::_Vector_val<int,std::allocator<int>>
1>          ]
1>          No constructor could take the source type, or constructor overload resolution was ambiguous
P-116418
Monika90
» 2014-08-30 22:11:48
od 1 do i włącznie z i
C/C++
tmp[ 0 ].erase( tmp[ 0 ].begin() + 1, tmp[ 0 ].begin() + i + 1 );
P-116421
1aam2am1
» 2014-08-30 22:13:06
C/C++
for( int j = 0; j < i; ++j )
{
    tab[ 0 ].erase( tab[ 0 ].begin(), tab[ 0 ].begin() ); //sprubuj tak
}
P-116422
akwes
» 2014-08-30 22:36:12
@1aam2am1,
aż nie wiem od którego powodu zacząć, mówiąc dlaczego Twoje rozwiązanie jest złe :P
P-116425
1aam2am1
» 2014-08-30 22:41:25
Wiem że jest złe ale erase przyjmuje iteratory do elementów tablicy.
P-116427
« 1 » 2
  Strona 1 z 2 Następna strona