Questa potrebbe essere una domanda semplice per alcuni di voi. Ma mi stavo chiedendo se un std::string
è un contenitore. Per container intendo i contenitori come ad esempio std::vector
, std::list
e std::deque
.C++ È uno std :: string un contenitore?
Poiché std::basic_string<>
accetta altri tipi di caratteri interi, ma viene anche ottimizzato lavorando con gli array di caratteri. Non mi è chiaro in quale categoria cada.
Questo compilerà:
#include <string>
#include <iostream>
int main() {
std::basic_string<int> int_str;
int_str.push_back(14);
return 0;
}
Ma con l'aggiunta di questa linea:
std::cout << int_str << std::endl;
non lo farà. Quindi da questi fatti ho potuto concludere che una std :: basic_string non era pensata per funzionare con altri tipi rispetto ai personaggi.
Potrebbe essere una strana domanda per voi. La ragione per cui ho bisogno di sapere questo è perché sto lavorando su un framework e non sono ancora in grado di determinare in quale categoria una "stringa" sarebbe caduta.
In senso stretto, non fa parte della libreria di contenitori standard. Ma in quale categoria inserirla dipende da cosa si vuole fare con esso: in molti modi, una stringa assomiglia molto ad un contenitore. – juanchopanza
Non è abbastanza generico da essere un contenitore adeguato. Non puoi creare una stringa da 'struct X' o' float'. –
Lo standard ha un concetto 'Contenitore'. Questa è la migliore definizione che possiamo usare per questa domanda. – BoBTFish