以array容器为例,根据上面图片的描述,data()返回的是首元素的地址(裸指针)。这个对vector也成立。但list和deque有序容器没有提供这个成语函数。
可见,data()成员函数只有array、vector提供了。个人猜测,因为只有这两者容器的内存分布是连续的。
其他容器的特点可以参考这篇文章。
代码示例:
#include#include #include #include using namespace std; int main() { array
intarr{11, 2, 3, 4}; vector intvec(intarr.begin(), intarr.end()); list intlist(intarr.begin(), intarr.end()); cout << "intarr.data(): " << intarr.data() << endl; cout << "intvec.data(): " << intvec.data() << endl; //test.cpp:43:21: error: ‘class std::__cxx11::list ’ has no member named ‘data’ // cout << intlist.data() << endl; cout << "intarr.data()[0]: " << intarr.data()[0] << endl; cout << "intvec.data()[0]: " << intvec.data()[0] << endl; cout << "intvec.data()[2]: " << intvec.data()[2] << endl; array strarr{"abc"}; vector strvec(strarr.begin(), strarr.end()); printf("strarr.data(): %sn", strarr.data()); cout << "strvec.data()[1]: " << strvec.data()[1] << endl; }
输出:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)