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

