Właśnie uczę się i mam prawdopodobnie głupie pytanie.std :: list resize daje nieoczekiwane wyniki
Mam 2 pojemniki, jeden to wektor, a drugi to lista. Oba są wypełnione intami 1,2,3,4. Po ich inicjalizacji zmieniam rozmiar pojemnika na rozmiar siedmiu, a następnie wydrukuję zawartość pojemnika.
#include <iostream>
#include <vector>
#include <list>
int main()
{
std::list<int> lst= {1,2,3,4};
std::vector<int> vec = {1,2,3,4};
lst.resize(7);
vec.resize(7);
for (auto p = lst.begin(); p!=lst.end(); ++p)
std::cout<<"List: "<<*p<<std::endl;
for (auto p = vec.begin(); p!=vec.end(); ++p)
std::cout<<"Vector: "<<*p<<std::endl;
return 0;
}
W wyjściu otrzymuję:
List: 1
List: 2
List: 3
List: 4
List: 0
List: 1994995248
List: 0
Vector: 1
Vector: 2
Vector: 3
Vector: 4
Vector: 0
Vector: 0
Vector: 0
muszę wyraźnie powiedzieć, że listy dodaję 0s aby tego uniknąć?
Jakiego kompilatora używasz? Wydaje się, że nie mogę tego odtworzyć tutaj: http: //ideone.com/9BwQJ6. Mają być zainicjowane wartością, jeśli nie określisz wartości podczas zmiany rozmiaru. – taocp
http://www.cplusplus.com/reference/list/list/resize/ – Nic007
Wygląda na to, że powinien on użyć wartości domyślnej, aby wypełnić miejsca, ale możesz spróbować wywołać 'lst.resize (7, 0) ; ', po prostu zobaczyć, co się stanie. – cxyzs7