草庐IT

array-unique

全部标签

c++ - 优化编译器能否从 std::unique_ptr 中移除所有运行时成本?

阅读关于std::unique_ptr的http://en.cppreference.com/w/cpp/memory/unique_ptr,我天真的印象是,一个足够聪明的编译器可以用裸指针替换unique_ptr的正确使用,并在unique_ptr时放入一个delete被摧毁。事实真的如此吗?如果是这样,是否有任何主流优化编译器真的这样做了?如果不是,是否可以编写一些具有unique_ptr的部分/全部编译时安全优势的东西,可以优化为没有运行时成本(空间或时间)?注意那些(适本地)担心过早优化的人:这里的答案不会阻止我使用std::unique_ptr,我只是好奇它是一个非常棒的工具

具有非 size_t 整数的 std::array 的 C++ 模板参数推导

我正在尝试调整Avoidingstructinvariadictemplatefunction中提供的解决方案根据我的需要。但是,我无法理解G++的行为。考虑以下功能:templateintnextline(consttypenamestd::arrayar){return0;}然后调用nextline(std::array{1,0});与GCC提示不匹配eslong.cpp:Infunction‘intmain()’:eslong.cpp:10:38:error:nomatchingfunctionforcallto‘nextline(std::array)’nextline(std

php -array_search无法正常工作 - 正常工作,然后失败

所以我有以下内容:echoarray_search('ResolvedatTier1',array_column($getHighLevelOverviewPeriodsArray,'status'));print_r($getHighLevelOverviewPeriodsArray);if(!array_search('ResolvedatTier1',array_column($getHighLevelOverviewPeriodsArray,'status'))){$resolved=array('status'=>'ResolvedatTier1','amount'=>0);arra

c++ - 如何在 C++11 中将容器 std::array<type, size> 用于多维数组?

例如,包含三个整数的一维数组可以定义为std::arraymyarray或myarray[3].有没有像std::array这样的容器对于像myarray[3][3]这样的多维数组? 最佳答案 一个关键部分是确保{}初始化工作类似于std::array,并尽可能合理地让自己保持pod状。与std::array的兼容性也很重要,什么比std::array更兼容??所以我的解决方案从std::array中生成多维数组小号:templatestructmulti_array_helper{usingtype=T;};templateusi

c++ - std::unique_ptr::release() 与 std::move()

我有一个表示运行时上下文并构建树的类,树根保存在unique_ptr中。构建树完成后,我想提取树。这是它的样子(不可运行,这不是调试问题):classContext{private:std::unique_ptrroot{newNode{}};public://imagineaconstructor,attributesandmethodstobuildatreestd::unique_ptrextractTree(){returnstd::move(this->root);}};所以我使用std::move()从Context实例中提取根节点。但是,除了使用std::move()之外

c++ - 为什么我不能像这样淡化 std::array?

这个问题在这里已经有了答案:C++11:Correctstd::arrayinitialization?(5个答案)关闭6年前。为什么我不能像这样淡化std::array?#includestructPoint{floatx;floaty;};intmain(){std::arraym_points{{1.0f,1.0f},{2.0f,2.0f},{3.0f,3.0f}};}这样做我得到错误:error:toomanyinitializersforstd::array但它是这样工作的:std::arraym_points{Point{1.0f,1.0f},Point{2.0f,2.0f

c++ - 为什么 std::is_array 对 std::array 返回 false?

自std::array和std::is_array都是在C++11中引入的,编译失败似乎很奇怪:#include#includestatic_assert(std::is_array>::value);有没有一种简单的方法来检查某物是否是一个数组,包括T[N]的两种可能性?和std::array? 最佳答案 std::is_array仅对看起来像T[]的类型定义为真或T[N].std::array不包括在内。您不能修改或专门化std::is_array成为true_type对于std::array在标准之下;这会使您的程序格式错误,

c++ - C/C++ : Naming conventions for arrays?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。数组的良好命名约定是什么?我正在处理一个包含几千行代码的代码库,并且没有一致的数组命名约定。很少有人通过在名称末尾附加List来命名它们,例如*message_list*,我真的不喜欢它,因为它错误地暗示这是一个列表(链表),并且很少有人像messages这样通过在末尾附加“s”来命名它们,这比以前的方法要好,但有时会失败。我想知道数组类型变量是否有任何

c++ - 传递 span<T> 和 std::array 作为参数有什么区别?

在他的C++CoreGuidelines,BjarneStroustrup建议在按引用传递数组时使用span。为什么不只传递一个std::array对象? 最佳答案 按值传递std::array将是复制它们。gsl::span的要点是采用它们的函数引用现有的数据数组。gsl::span能够获取运行时定义大小的数组。std::array在编译时固定。gsl::span不关心什么类型拥有数组;它只是一个指针+大小。因此,基于span的接口(interface)可以从std::vector、QVector和许多其他类型中获取数据。基于st

c++ - 是否可以在 Xcode 5.1 中使用 std::make_unique?

由于Xcode5.1包含clang3.4,因此应该可以使用std::make_unique。好像是在memory.h中定义的。但是,它需要有_LIBCPP_STD_VER>11但由于__cplusplus宏的值,它仍然设置为11(仍然是201103L).有办法改变吗? 最佳答案 如clangwebsite中所述,您需要启用-std=c++1y。Xcode在其“C++语言版本”选项中不包含此选项作为选项,因此您需要手动输入它。为此,您需要在项目定义打开时进入“编辑器”菜单,然后按“显示定义”。您现在应该能够手动将“C++语言方言”选项