草庐IT

inside-out

全部标签

c++ - "Moving out"对象的内部表示。好不好?

假设我有一个类,它的内部数据表示是一个std::string:classmy_type{std::stringm_value;...};如果我可以“移出”my_type的内部表示,会不会很好?这种能力将以如下方式完成:classmy_type{std::stringm_value;public:operatorstd::string()&&{//NOTE:^^refqualifierforr-valuereturnstd::move(m_value);//Explicitlydostd::moveisusedbecauseref-qualifiersdon'tapply//todata

c++ - std::_throw_out_of_range 不知从何而来

我是C++的绝对初学者。字面上地。才过了一个星期。今天我在写一个程序来测试需要多少次迭代才能使某个数字回文。这是代码:#include#include#include/*Thisprogramcalculatesthestepsneededtomakeacertainnumberpalindromic.Itisdesignedtooutputthevaluesfornumbers1to1000*/usingnamespacestd;classnumber{public:stringvalue;voidreverse();};voidnumber::reverse(){std::reve

c++ - 什么时候在 C++ 中使用 out 参数?

假设我的成员函数需要同时返回std::vector>和一个double.两者都是作为同一算法的一部分计算的:我需要它们都从same成员函数返回。(即,我不能轻易拥有两个独立的功能;它需要重复的代码和性能开销。)我读到最好避免使用参数inthesequidelines,即:F.20:For"out"outputvalues,preferreturnvaluestooutputparameters.所以我的代码如下所示:std::pair>,double>computeTransitionsAndCost(doubleinput);(Astd::pair是一个转换,因此得名。)如果没有ou

C++——typedef "inside"模板参数?

假设我有一个这样的模板函数:templatevoidmyfunc(Iteratora,typenameIterator::value_typeb){...}有没有办法通过为Iterator::valuetype声明一个typedef来实现同样的事情,我可以在函数签名中使用它?例如,我希望能够做这样的事情:templatevoidmyfunc(Iteratora,typeb){...}到目前为止,我已经求助于使用默认模板参数和Boost概念检查来确保始终使用默认值:templatevoidmyfunc(Iteratora,typeb){BOOST_STATIC_ASSERT((boost

c++ - X代码 6.1 : All commands in Debug menu greyed out

我目前正在使用XCode进行一些C++编程。我的问题是XCode中的调试菜单总是灰色的。添加断点也不会改变这一点。我在提问之前进行了一些搜索,答案主要是确保方案正确。我检查了是否选择了LLDB调试器,并且已将可执行文件添加到目标。我还缺少什么?谢谢 最佳答案 在您构建并运行当前方案之前,调试菜单项将被禁用。在osx10.9.5上使用xcode6.1.1,我选择“新建>项目应用程序>命令行工具”来创建一个简单的helloworld。所有调试命令都是灰色的我发现这很令人困惑,因为我习惯了visualstudio给我通过介入开始调试的选项

【ssh】解决port 22:connection time out

突然gitclone报错了,之前没遇到过,记录一下报错信息:ssh:connecttohostgithub.comport22:ConnectiontimedoutPleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists.运行以下命令检查ssh是否能够连接成功ssh-Tgit@github.com报错:$ssh-vTgit@github.comOpenSSH_9.2p1,OpenSSL1.1.1t7Feb2023debug1:Readingconfigurationdata/etc/ssh/ssh_configdebug

c++ - #error inside of#define - 可能在 C++ 中(如果未定义某些常量,则在调用宏 MyMacro 时生成错误)?

我想定义宏,它基于某些条件(#defineINITED的存在,而不是宏的参数)将返回值,或生成编译器错误,例如:#errorNotinitialized!我试过(对于myIdea.h):#ifdefINITED#defineMyMacro(x)x->method();//somethingwithx#else#defineMyMacro(x)#errorNotinitalized!#endif但是该代码会生成错误(不是我想要的那个)预期的宏格式参数。请注意,我不想要该代码(工作,但做了一些不同的事情):#ifdefINITED#defineMyMacro(x)x->method();/

c++ - std::experimental::optional inside constexpr 函数

我想在我的constexpr函数中使用可选的习惯用法来轻松地阐明变量是否已设置。我对std::experimental::optional的尝试:constexprboolcall(){std::experimental::optionalr;r=true;//Error//Similarerrorwith://r=std::experimental::optional(true);if(!r){returnfalse;}return*r;}我得到错误:调用非constexpr函数-所以赋值是不可能的,因为这个操作不能是constexpr(Example)。但如果我实现自己的(非常丑陋

java - C++ 中的 System.out.println 函数语法

我想在C++中使用cout创建一个与java中的println函数相同的函数。这意味着调用应该是这样的:inta=5println("Astring"+a);变量a应该是任何基本类型。在这种情况下我应该有什么样的参数,它是如何工作的?谢谢 最佳答案 正如larsmans已经指出的,java在运算符+上有重载。所以你可以用整数连接字符串。这在C++中也是可能的,但并非对所有类型都是开箱即用的。您可以使用这样的模板化函数。#includeusingnamespacestd;templatevoidprinter(Tt){coutvoid

c++ - std::out_of_range 错误

我正在LinuxUbuntu的opencv中编写以下代码。x_captured和y_captured是“int”类型的vector。两个vector的大小都是18。for(inti=0;i但是当i=0和j=18之后它会抛出以下错误:terminatecalledafterthrowinganinstanceof'std::out_of_range'what():vector::_M_range_check 最佳答案 问题是当有效索引为0到N-1时,您正在使用从0到N的循环。这就是为什么您在最后一次迭代中遇到异常:std::vecto