Это обсуждалось в Effective STL Скотта Мейерса, что вы можете сделать &vec[0]
, чтобы получить адрес первого элемента std::vector
, и поскольку стандарт ограничивает векторы наличием непрерывной памяти , вы можете делать такие вещи, как это.
// some function
void doSomething(char *cptr, int n)
{
}
// in your code
std::vector<char> chars;
if (!chars.empty())
{
doSomething(&chars[0], chars.size());
}
редактировать: из комментариев (спасибо casablanca)
- С осторожностью относитесь к указателям на эти данные, так как указатель может быть недействительным, если вектор был изменен.