Vedo questo molto:E & vec [0] comportamento definito per un vd std :: vector?
std::vector<Something> vec;
do_something_with_vec(vec);
Something *arr=&vec[0];
do_something_that_needs_carray(arr);
Voglio dire, un vettore sarà probabilmente usare un array interno quindi non vedo il motivo per cui questo funziona, mi chiedo solo se questo è definito un comportamento (come, è un implementor ha permesso di eseguire un'implementazione di std :: vector con la quale questo si sarebbe interrotto).
Se ci sono conflitti tra gli standard, sono interessato a ciò che dice lo standard C++ 11.
Non * probabilmente * - un 'vector' ** userà la memoria contagiosa. –
"* Se ci sono conflitti tra gli standard, sono interessato a ciò che dice lo standard C++ 11. *" C++ 98 non garantiva che questo avrebbe funzionato, ma C++ 03 e C++ 11 fanno . – ildjarn