std::array 和 boost::array 之间的区别
Differences between std::array and boost::array
boost::array
更改为std::array
是完全安全的吗?它会导致任何差异吗?
boost::array
比std::array
(性能(更好吗?
std::array<T,N>
和boost::array<T,N>
是标准的布局聚合,只包含一个T[N]
数组。
它们与namespace boost
和namespace std
的交互可能不同(具体来说,ADL会找到std
用于std::array
的函数,以及用于boost::array
的boost
函数(。
所以,如果boost
中有一个函数foo
,如果some_array
来自boost
,则调用foo(some_array)
可能会起作用,如果它来自std
则不然。
目前std
中唯一的容器算法是std::begin
和std::end
(如果包括近未来的算法,则类似的新算法size
empty
等(。 范围 v3(或任何已发布的内容(可能会添加更多内容。
boost
中的容器算法比std
中的容器算法多。 其中一些可能无法构建。
最坏的情况下,有人可能会在boost
中编写一个与容器算法同名的函数,其参数可以从std::array
隐式转换,并且对该函数的非限定调用可能会导致转换,在你更改变量类型之后,而在它调用boost
容器算法之前。
同样,有人可以编写代码来显式检查模板参数是否为boost::array
,如果是,则表现不同。
这两者都有点牵强。
最后,std::array
具有现代noexcept
装饰,而 boost 有一个您可以获得的公共c_array
成员(我相信std::array
成员变量的名称未指定(。 (通过@Potatoswatter(。 我个人希望std::array
在未来得到更好的支持,因为boost::array
存在主要是因为std
缺乏功能。
除了这些极端情况之外,std::array
应该是一个直接的替代品。
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- C++ - "!pointer"和"pointer == nullptr"的区别?
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 返回递归调用和仅递归调用的区别
- Qt:remove() 和 rmdir() 有什么区别
- C++ &array和array的用法有什么区别?
- std::array 和 boost::array 之间的区别
- std::vector和std::array初始值设定项列表之间的区别
- std::valarray和std::array之间有什么区别
- 带有std::array的可变进模板结构体与c风格数组成员的区别
- array[n]与array[]的区别
- int * array[60] 和 int * array = new int(60);之间的区别