Хотя итераторы, возвращенные из .begin () или .end (), могут работать как указатели,
, но это не гарантирует, что они действительно являются псевдонимами реальных указателей.
Например, подумайте об итераторах из std::map
.
Они должны содержать больше информации, а не только указатель, поскольку они выполняют итерацию по двоичному дереву.
Имеет смысл думать об итераторе из непрерывного контейнера как о указателе,
возможно, это действительно так, но помните, что стандарт C ++ не гарантирует этого.
В любом случае, вот мое решение.
void foo(void *buffer, std::vector<unsigned char> l) {
memcpy(buffer, &*l.begin(), l.size());
}
выглядит странно, но выполняет свою работу правильно.
Решение другого ответа выглядит более элегантно, хотя:)