草庐IT

auto-links

全部标签

c++ - 如何使用 std::auto_ptr 声明动态数组?

我正在尝试声明一个动态int数组,如下所示:intn;int*pInt=newint[n];我可以用std::auto_ptr做到这一点吗?我试过类似的方法:std::auto_ptrpInt(newint[n]);但是它不编译。我想知道我是否可以使用auto_ptr构造声明一个动态数组,以及如何声明。谢谢! 最佳答案 不,你不能,也不会:C++98在数组方面非常有限,auto_ptr是一个非常笨拙的野兽,它通常不会做你需要的事情。您可以:使用std::vector/std::deque,或std::array,或者使用C++11和

使用ST-Link烧录程序出现No target connected所有的解决方案

原因分析及解决办法:1)芯片供电不足,导致找不到芯片;【解决办法】用杜邦线或者usb线对芯片再次进行供电 2) ST-Link与单片机接线错误,或者接线不良; 【解决办法】按照下面的方式进行接线,并确保接线良好3.3V⬅➡3.3VGND⬅➡GNDSWDIO⬅➡SWDIOSWCLK⬅➡SWCLK3)SWD引脚被占用或者被禁用 【解决办法】此时可以有两种方法可以解决:按住RESET,并在点击烧录后立马放开,抢一个时间差,这个方法有一定概率会失败,可以多尝试几次;把BOOT0拉高,可以将芯片从系统存储器或者是内置SRAM中启动,这时候并不会运行闪存存储器的程序,那么SWD就没有被占用,烧录一个正常的

c++ - 是否有 auto_ptr 的替代品可以与 c++11 中的 boost ptr_map 一起使用

在c++11中,auto_ptr已弃用,取而代之的是更合理的unique_ptr。唉,如果你使用boost::ptr_map,auto_ptr就完成了一个非常方便的用途:std::auto_ptrpLayer(newLayer());mRawLayerPtrMap.insert(layerName,pLayer);是否有可能使用与c++11类似的东西。这个我知道Layer*pLayer=newLayer();mFusedLayers.insert(fusedLayerName,pLayer);有效,但auto_ptr在一些更复杂的场景中有它的优点。是否有适用于C++11的替代品?

c++ - foreach(int i.. 和 foreach(auto i

我正在MacOX(LLVM4.2)附带的Clang编译器上试验C++11功能,以下结果让我感到困惑://clangcompilewith"c++-std=c++11-stdlib=libc++"#include#includeintmain(void){usingnamespacestd;vectoralist={1,2,3,4};for(inti=0;i在运行环境中,我得到如下不同的输出:12342340为什么我会得到不同的结果? 最佳答案 for(autoi:alist)这会获取alist中的每个value,因此i变为:1,2,

c++ - 依赖于另一个库的库上的 CMake 和 target_link_libraries

我正在使用CMake构建不同的C++库,整个事情可以总结如下:liba:不依赖于任何东西libb:依赖于a我现在需要创建一个依赖于b的库c。我只需要在b上链接c吗?或者在b和a上,因为b依赖于a?target_link_libraries(cb)还是target_link_libraries(cba)?谢谢 最佳答案 在你的代码构建库b中,你应该告诉CMakeb依赖于a:target_link_libraries(ba)然后,您的库/应用程序c可以仅链接到它使用的内容,而不必担心依赖项的依赖关系:target_link_librar

C++ : Different deduction of type auto between const int * and cont int &

这里是代码示例。a.intii=0;b.constintci=ii;c.autoe=&ci;-->eisconstint*d.auto&f=42;-->invalidinitializationofnon-constreferenceoftype‘int&’fromanrvalueoftype‘int’e.constauto&g=42-->ok观察:1.对于c)子句,自动推导类型const2.对于子句d),不会自动推导出类型const3.对于条款e),必须手动添加类型const才能使其工作。为什么子句c而不是d会自动推导类型const? 最佳答案

c++ - 'for(auto &str : vec)' 内部 for 循环的目的是什么?

我是C++的新手,正在尝试学习vector的概念。我在网上看到这段代码。我的问题是,'for(auto&str:vec)'中的内部for循环的目的是什么?为什么作者要对第一个引用(&str)创建第二个引用(&c)?intmain(){vectorvec;for(stringword;cin>>word;vec.push_back(word)){}for(auto&str:vec){for(auto&c:str){c=toupper(c);}}for(inti=0;i!=vec.size();++i){if(i!=0&&i%8==0)cout 最佳答案

c++ - 带有 if 语句的 auto 函数不会返回值

我制作了一个模板和一个auto函数,用于比较2个值并返回最小值。这是我的代码:#includeusingnamespacestd;//Templatewithavaluereturningfunction:PrintSmallertemplateautoPrintSmaller(TNumOne,UNumTwo){if(NumOne>NumTwo){returnNumTwo;}else{returnNumOne;}}intmain(){intiA=345;floatfB=23.4243;cout但它无法编译,我在VS2015上遇到此错误:错误C3487“int”:所有返回表达式必须推导出

c++ - 我可以使用 auto 或 decltype 代替尾随返回类型吗?

我发现尾随返回类型很容易定义返回复杂类型的函数的返回值,例如:autoget_diag(int(&ar)[3][3])->int(&)[3]{//usingtrailingreturntypestaticintdiag[3]{ar[0][0],ar[1][1],ar[2][2]};returndiag;}auto&get_diag2(int(&ar)[3][3]){//adding&autobecauseotherwiseitconvertsthearraytopointerstaticintdiag[3]{ar[0][0],ar[1][1],ar[2][2]};returndiag;

C++——这里是否存在从 Fred* 到 auto_ptr<Fred> 的隐式转换?

我看到了下面的代码,#include#includeusingnamespacestd;classFred;//Forwarddeclarationtypedefauto_ptrFredPtr;classFred{public:staticFredPtrcreate(inti){returnnewFred(i);//Isthereanimplicitcastinghere?Ifnot,howcanwereturn//aFred*withreturnvalueasFredPtr?}private:Fred(inti=10):i_(i){}Fred(constFred&x):i_(x.i_