Posso inizializzare un vettore STL con 10 dello stesso numero intero in un elenco inizializzatore? I miei tentativi finora mi hanno fallito.Posso inizializzare un vettore STL con 10 dello stesso numero intero in un elenco inizializzatore?
Posso inizializzare un vettore STL con 10 dello stesso numero intero in un elenco inizializzatore?
risposta
Credo che si intende questo:
struct test {
std::vector<int> v;
test(int value) : v(100, value) {}
};
Questa risposta solo in codice è scarsamente documentata e più complicata del necessario. Vedere la risposta di Ed S. sotto. – Blake
@ Cokemonkey11: questa risposta * non * è affatto documentata, puoi trovare la documentazione nel tuo riferimento preferito (il mio è cppreference). È * non * più complicato del necessario, senza la classe e la risposta del costruttore Ed S. non inizializza un vettore * in una lista di inizializzazione *, che è parte della domanda. In questo caso non sarebbe molto importante, ma considerate se la domanda riguardasse una serie di interi, l'inizializzazione nello stack e come parte dell'elenco di inizializzazione siano diversi. –
potete inserire quello che state facendo
int i = 100;
vector<int> vInts2 (10, i);
vector<int>::iterator iter;
for(iter = vInts2.begin(); iter != vInts2.end(); ++iter)
{
cout << " i " << (*iter) << endl;
}
Se stai usando C++ 11 e il GCC, si potrebbe fare questo:
vector<int> myVec() {[0 ... 99] = 1};
Si chiama a distanza di inizializzazione ed è un Estensione solo GCC.
Wow, non ne ho mai nemmeno sentito parlare. Certo, è meglio usare semplicemente il costruttore giusto. – chris
Sì. Ma questo è utile per gli array e le strutture. Comunque, GCC ha un sacco di estensioni che fanno cose folli. Meglio attenersi al C++ standard. –
L'estensione "Designated Initializers" è disponibile solo per il codice C, non C++. Per l'elenco delle estensioni GCC disponibili vedi https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions e https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions .html # C_002b_002b-Estensioni –
È possibile farlo con std::vector
costruttore:
vector(size_type count,
const T& value,
const Allocator& alloc = Allocator());
Quali prende count
e value
da ripetere.
Se si desidera utilizzare gli elenchi di inizializzazione è possibile scrivere:
const int x = 5;
std::vector<int> vec {x, x, x, x, x, x, x, x, x, x};
utilizzare il costruttore del caso, che prende una dimensione e un valore predefinito.
int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
L'elenco di inizializzazione per il vettore è supportato dal C++ 0x. Se si è compilato con C++ 98
int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
- 1. Come trovare multipli dello stesso numero intero in un arraylist?
- 2. Come inizializzare un vettore/elenco STL con una classe senza invocare il costruttore di copie
- 3. Inserimento nel vettore con riferimento ai dati dello stesso vettore
- 4. Come memorizzare un numero intero (10 cifre) intero?
- 5. Come posso bloccare un mutex in un elenco di inizializzatore?
- 6. Come ordinare un vettore STL?
- 7. STL clonazione di un vettore
- 8. Dividere un elenco STL?
- 9. ridurre la capacità di un vettore stl
- 10. Come posso inizializzare un vettore std :: con un parametro di dimensione e avere ogni oggetto costruito in modo indipendente?
- 11. Ricerca di un vettore STL C++ all'interno di un vettore STL
- 12. Un elenco inizializzatore vuoto contiene un codice C valido?
- 13. Come creare un vettore binario con 1 se gli elementi fanno parte dello stesso vettore?
- 14. stl - Una stringa è un vettore?
- 15. Come arrotondare un numero a un numero intero selezionato
- 16. Come rappresentare un numero intero superiore a un numero intero
- 17. vettore stl e C++: come .resize senza un costruttore predefinito?
- 18. Numero intero in bitfield come elenco
- 19. Stesso output per htonl() e ntohl() su un numero intero
- 20. Scrittura di un numero intero con un file con fputs()
- 21. Convertire un numero intero in un numero float in Golang
- 22. Arrotondare un numero intero al numero intero più vicino
- 23. Come inizializzare un elenco di stringhe C# (Elenco <string>) con molti valori stringa
- 24. Posso confrontare e aggiungere un numero in virgola mobile a un numero intero in C?
- 25. Come moltiplicare un BigDecimal con un numero intero in Java
- 26. Come bloccare un numero intero in un intervallo? (In Python)
- 27. Come estrarre un numero intero da un NSDictionary e inserirlo in un numero intero?
- 28. Posso inizializzare un attributo C# con un array o un altro numero variabile di argomenti?
- 29. WPF: Binding un numero intero a un TextBlock con TemplateBinding
- 30. Conversione di un elenco di un elemento in un numero intero
C'è un [ 'std :: vector <>' costruttore] (http://en.cppreference.com/w/cpp/container/vector/vector) (2) che lo fa; perché vorresti una lista di inizializzazione? – ildjarn
@ildjarn: Penso che intenda in un elenco di inizializzazione del costruttore e non nel corpo del costruttore. – GManNickG
@GManNickG: A me non sembra così. L'OP chiede un modo per inizializzare un vettore con il numero X di elementi tutti impostati sullo stesso valore. Sì, menziona un elenco di inizializzazione, ma visto che c'è già un costruttore che soddisfa il * requisito * che dovrebbe essere abbastanza buono –