C++ 使用array::data和array::front

C++ 使用array::data和array::front,c++,c++11,stdarray,C++,C++11,Stdarray,&array::front和array::data之间有什么区别吗 例1: const char* cstring = "Test String"; array<char, 12> carray; std::memcpy(&carray.front(), cstring, 12); const char*cstring=“测试字符串”; 阵列天线; std::memcpy(&carray.front(),cstring,12); 例2: const char*cstrin

&array::front
array::data
之间有什么区别吗

例1:

const char* cstring = "Test String";
array<char, 12> carray;
std::memcpy(&carray.front(), cstring, 12);
const char*cstring=“测试字符串”;
阵列天线;
std::memcpy(&carray.front(),cstring,12);
例2:

const char*cstring=“测试字符串”;
阵列天线;
std::memcpy(carray.data(),cstring,12);

以上两个是相同的吗?或者
array::data
有什么特殊用法吗?

区别只是返回对第一个元素的引用并返回指向它的指针。对于大小为零的数组,前者未定义,后者未指定。对于非零大小的数组,
data()
完全等同于
&front()


在这种情况下,您应该更喜欢
data()
,因为您需要一个指针,而这会给您一个指针

第二个更容易阅读。
const char* cstring = "Test String";
array<char, 12> carray;
std::memcpy(carray.data(), cstring, 12);