2015-08-19 5 views
0

Есть ли разница между & array::front и array::data?Использование массива :: данные и массив :: front

ех 1:

const char* cstring = "Test String"; 
array<char, 12> carray; 
std::memcpy(&carray.front(), cstring, 12); 

ех 2:

const char* cstring = "Test String"; 
array<char, 12> carray; 
std::memcpy(carray.data(), cstring, 12); 

являются выше два одинаково? Или есть ли специальное использование array::data?

+1

Второе легче читать. – chris

ответ

2

Разница заключается лишь в том, что front() возвращает ссылку на первый элемент, а data() возвращает указатель на него. Для массивов нулевого размера первая не определена, а последняя не определена. Для ненулевых массивов data() в точности эквивалентен &front().

В этом случае вы должны предпочесть data() просто потому, что вам нужен указатель, и это дает вам указатель.