Может ли std::vector<char> рассматриваться как массив следующим образом:
std::vector<char>
std::vector<char> v(10); strncpy(&v[0], "hello", 9); // <-- Is this safe?
Да, все в порядке. Начиная с C ++ 03, vector должен иметь непрерывное хранилище.
vector
Что касается C ++ 11, то же самое относится и к std::string, кстати; и вы можете сказать v.data() как синоним для &v[0] (который также действителен, когда v пуст).
std::string
v.data()
&v[0]
v