草庐IT

c++ - 如何在 c++1y 的返回类型推导中保留 cv 限定符或引用?

首先,我构建了四个结构,每个结构都返回值、左值引用、const左值引用、右值引用。我在包装器(B或C)中使用它们,在这些包装器的方法func()中,我想保留A的func()的引用和cv限定符。在C++11中,我使用了尾随返回类型。但随着c++14中正常返回类型推导的到来,我猜我可以跳过尾部,但只有auto,返回类型像普通一样忽略限定符和引用自动。然后,我的问题是在c++14中实现它的最佳方法是什么,它的行为就像下面的类B一样?当它很琐碎时,写尾部(通常是decltype(returnexpression))有时会令人沮丧。structA1{intfunc(){returnx;}intx

java - 在多个 jni 调用中保持某种 c++ 对象存活

我的java代码将调用现有的c++代码来解析文件。它将生成一个保存许多数据的对象。我将调用jni的第二种方法来访问此类数据,当我调用第二种方法时,我必须再次解析文件。这显然是正确的行为。有办法解决吗?顺便说一句:我是c++的新手。 最佳答案 我不确定我是否理解你的问题。但我想你想要做的是在多个jni调用中保持某种c++对象处于Activity状态。你可以做很多事情。首先解析您的文件并将您的C++对象存储在全局变量中。这是最简单的解决方案,但不是一个很好的解决方案。您还可以将c++对象的生命周期移动到java中。jlongjava_s

c++ - 我们可以在一个 STL 列表中保存 2 种数据类型吗?

我希望我的列表包含一个整数值和一个字符串值。这可能吗?我正在使用只能存储整数的STL列表实现哈希表。我正在散列一个字符串以获取我存储整数的索引。现在我希望我的字符串也与整数一起存储。编辑1:所以我正在使用这个声明:list>table[127];这是我得到的错误:>>'应该是>>'在嵌套的模板参数列表中好的,我解决了这个问题。看来我没有在“>>”中放置一个空格,所以现在解决了下一个问题如何将我的对添加到表格数组? 最佳答案 你可以有一个列表std::pairs或者,使用c++11,std::tuple,例如:std::list>li

c++ - 有没有办法将 `constexpr` 值传递给 lambda,以便它在该 lambda 中保持 `constexpr`?

这是我想做的;发布整个代码,因为它不是太长,并且还可以演示我要解决的具体任务。基本上,我需要一种方法来按索引迭代参数包中的值(索引部分很重要,尽管在本例中不需要)。#include#include#includetemplateconstexprvoidstatic_for(Functor&&f){ifconstexpr(First{});static_for(std::forward(f));}}templateautovalue_by_index(Args&&...args)noexcept{returnstd::get(std::forward_as_tuple(std::for

c++ - 为什么我不能在我的 vector 中保留 1,000,000,000?

当我输入以下内容时。代码,我得到的输出为1073741823。#include#includeusingnamespacestd;intmain(){vectorv;cout但是,当我尝试通过v.resize(1000000000);将vector的大小调整为1,000,000,000时,程序停止执行。当程序似乎应该能够分配所需的内存时,我如何才能使它能够分配所需的内存?我在Windows7中使用MinGW。我有2GBRAM。不应该吗?万一不可能,我不能将其声明为整数数组并离开吗?但即使这样也行不通。另一件事是,假设我会使用一个文件(可以轻松处理如此多的数据)。我怎样才能让它同时读写呢

c++ - 在 C++ 中保存指向迭代器的指针是否安全?

我会先问问题,再问动机,最后是按预期编译和执行的说明性代码示例。问题如果我可以确保迭代器在我需要使用它的期间内不会失效,那么保存指向迭代器的指针(例如指向list::iterator的指针)是否安全。动机我有多个容器,我需要从一个容器中的项目直接交叉引用到另一个容器中的相应项目等等。一个容器中的项目可能并不总是在另一个容器中有相应的项目。因此,我的想法是将指向容器#2中元素的迭代器的指针存储在容器#1中存储的元素中,依此类推。为什么?因为一旦有了迭代器,我不仅可以访问容器#2中的元素,而且如果需要,我还可以删除容器#2中的元素等。如果容器#2中有相应的元素,我将在容器#1中的元素中存储

c++ - 在基于策略的类中保留构造的隐性

考虑一个基于策略的智能指针类Ptr只有一个策略可以防止在NULL状态下(以某种方式)取消引用它。让我们考虑2个此类策略:NotNullNoChecking自NotNull政策更具限制性,我们希望允许从Ptr进行隐式转换至Ptr,但不是相反的方向。为了安全起见,那一个必须是明确的。请查看以下实现:#include#include#includestructNoChecking;structNotNull;structNoChecking{NoChecking()=default;NoChecking(constNoChecking&)=default;explicitNoChecking

c++ - 如何在 dlib 中保存结果人脸特征图像?

我正在使用dlib的face_landmark_detection_ex.cpp,它显示检测到的面部图像和原始图像上的所有面部标志。我想将包含所有68个面部特征的原始图像保存到我的计算机中。我知道这可以通过dlib的save_png和draw_rectangle函数来完成,但是draw_rectangle只给出检测到的面部矩形位置,连同它,我也想在原始图像并像这样保存它们: 最佳答案 参数pixel_type用于指定用于绘制矩形的像素种类。在函数的header声明中定义了默认情况下要使用的像素类型是rgb_pixel(rgb_pix

c++ - 在 mp4 容器中保存视频时 FPS 太高

当我从avi文件解码帧,然后在x264中解码它们并保存到mp4文件时,输出文件的fps始终是12,800。因此文件播放速度非常快。但是,当我将编码的h264帧保存为avi格式而不是mp4时,fps就是我想要的-25。可能是什么问题?这是我在VS2010中编写的代码:#include"stdafx.h"#include"inttypes.h"extern"C"{#include"libavcodec/avcodec.h"#include"libavformat/avformat.h"#include"libavutil/avutil.h"#include#include#include#

c# - 在 C# 中保留 C++ 指针是否安全?

我目前正在编写一些使用调用的C#/C++代码。在C++端,有一个std::vector充满了指针,每个指针都由C#代码中的索引标识,例如函数声明如下所示:voidSetName(char*name,intidx)但现在我在想,因为我正在使用指针,所以我不能将指针地址本身发送到C#,然后在代码中我可以做这样的事情:voidSetName(char*name,intptr){((TypeName*)ptr)->name=name;}显然,这是我正在做的事情的快速版本(并且可能无法编译)。是否可以保证指针地址在C++中保持不变,以便我可以安全地将其地址存储在C#中,或者由于某种原因这会太不稳