C++面试中,std::array的编译器排序机制是如何巧妙实现的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1123个文字,预计阅读时间需要5分钟。
某日二师兄参加XXX科技有限公司的C++工程师开发岗位第25面:面试官:array熟悉吗?二师兄:熟悉。面试官:你说的原生数组还是std::array?二师兄:原生数组和std::array有什么区别?面试官:区别不大。
某日二师兄参加XXX科技公司的C++工程师开发岗位第25面:
面试官:
array熟悉吗?二师兄:你说的是原生数组还是
std::array?面试官:你觉得两者有什么区别?
二师兄:区别不是很大,原生数组(非动态数组)和std::array都在栈上开辟空间,初始化的时候需要提供数组长度,且长度不可改变。有一点区别的是,
std::array提供了安全的下标访问方法at,当下标越界时会抛出异常。面试官:还有其他区别吗?
二师兄:让我想想。。。在当作参数传递时,原生数组会退化为指针,而
std::array会保留类型和长度信息。面试官:好的。知道空数组的长度和长度为0的std::array对象有什么区别吗?
二师兄:(这也太刁钻了吧。。)空数组的长度应该是0,但是长度为0的
std::array对象的长度是1,因为它是空类。
本文共计1123个文字,预计阅读时间需要5分钟。
某日二师兄参加XXX科技有限公司的C++工程师开发岗位第25面:面试官:array熟悉吗?二师兄:熟悉。面试官:你说的原生数组还是std::array?二师兄:原生数组和std::array有什么区别?面试官:区别不大。
某日二师兄参加XXX科技公司的C++工程师开发岗位第25面:
面试官:
array熟悉吗?二师兄:你说的是原生数组还是
std::array?面试官:你觉得两者有什么区别?
二师兄:区别不是很大,原生数组(非动态数组)和std::array都在栈上开辟空间,初始化的时候需要提供数组长度,且长度不可改变。有一点区别的是,
std::array提供了安全的下标访问方法at,当下标越界时会抛出异常。面试官:还有其他区别吗?
二师兄:让我想想。。。在当作参数传递时,原生数组会退化为指针,而
std::array会保留类型和长度信息。面试官:好的。知道空数组的长度和长度为0的std::array对象有什么区别吗?
二师兄:(这也太刁钻了吧。。)空数组的长度应该是0,但是长度为0的
std::array对象的长度是1,因为它是空类。

