C ++ Czy std :: string jest kontenerem?
To może być proste pytanie dla niektórych z was. Ale zastanawiałem się, czystd::string
jest pojemnikiem. Przez pojemnik mam na myśli takie pojemniki jak na przykładstd::vector
, std::list
istd::deque
.
Odstd::basic_string<>
akceptuje inne typy niż znaki zintegrowane, ale jest również optymalizowany przez pracę z tablicami znaków. Nie jest dla mnie jasne, w jakiej kategorii się znajduje.
To się skompiluje:
#include <string>
#include <iostream>
int main() {
std::basic_string<int> int_str;
int_str.push_back(14);
return 0;
}
Ale dodając tę linię:
std::cout << int_str << std::endl;
Nie będzie. Dzięki tym faktom mogłem stwierdzić, że std :: basic_string nie był przeznaczony do pracy z innymi typami niż znaki.
To może być dla ciebie dziwne pytanie. Powodem, dla którego muszę to wiedzieć, jest to, że pracuję nad frameworkiem i wciąż nie jestem w stanie określić, w której kategorii spadnie „ciąg”.