小编Lyb*_*rta的帖子

为什么从采用std :: ranges :: output_range的算法返回std :: ranges :: safe_iterator_t而不是std :: ranges :: safe_subrange_t

我正在编写一种算法,该算法将一些数据写入提供的输出范围(问题的初始文本包括具体内容,并将注释中的讨论变成错误的方向)。我希望它在API中与标准库中的其他范围算法尽可能接近。

我查看了的实例的最新草案std::ranges::output_range,发现只有2种算法:

他们俩都回来了std::ranges::safe_iterator_t。我认为返回是合乎逻辑的std::ranges::safe_subrange_t。即使您写入输出流,在这种情况下,您仍然可以返回迭代器-前哨对,并将该范围向下传递。

我找到了P0970,看起来好像std::ranges::safe_subrange_t是后来添加的。也许算法根本没有更新?还是有其他原因?

c++ iterator range c++20

6
推荐指数
1
解决办法
513
查看次数

通过值或通过引用const传递std :: chrono :: duration?

因此,过去我通过std::chrono::duration引用const 传递值,但现在我认为它们只不过是包装在类中的单个算术类型,因此按值传递它才有意义。

有没有人介绍过它?

c++ performance c++11 c++-chrono

5
推荐指数
1
解决办法
1188
查看次数

填充阵列状结构

给定一个包含相同基本类型序列的结构,如下所示:

struct Vector
{
    float x;
    float y;
    float z;
};
Run Code Online (Sandbox Code Playgroud)

会员之间可以填充吗?我得到了[class.mem]的链接,说明可以添加填充以实现对齐,但在这种情况下它是否适用?

c++ struct padding language-lawyer

5
推荐指数
1
解决办法
173
查看次数

从变量添加SSH密钥

我在Docker容器中有一个bash脚本,需要通过ssh访问远程服务器.我在变量中有SSH密钥.如何将其添加到SSH?

ssh bash ssh-keys

5
推荐指数
3
解决办法
7128
查看次数

处理stl容器的大小

在我学习STL之前,我正在重写一个由我编写的通用库.它一直使用C风格的数组.在很多地方都有这样的代码:

unsigned short maxbuffersize; // Maximum possible size of the buffer. Can be set by user.
unsigned short buffersize; // Current size of the buffer.
T *buffer; // The buffer itself.
Run Code Online (Sandbox Code Playgroud)

我做的第一件事是改变这样的代码:

unsigned short maxbuffersize;
unsigned short buffersize;
std::vector<T> buffer;
Run Code Online (Sandbox Code Playgroud)

然后:

typedef unsigned short BufferSize;
BufferSize maxbuffersize;
BufferSize buffersize;
std::vector<T> buffer;
Run Code Online (Sandbox Code Playgroud)

然后我觉得我做的很糟糕,应该重新考虑我的编码风格.起初,BufferSize似乎是一个类型的非常糟糕的名称,但随后出现了各种奇怪的问题.如何命名尺寸类型?我应该使用自己的类型还是继承std::vector<T>::size_type?我应该缓存容器的大小还是一直使用size()?我应该允许用户手动设置容器的最大大小,如果不允许,我该如何检查溢出?

我知道不可能有一个通用的方法,因此我想听听其他编码人员和框架供应商使用的政策.我正在开发的库是跨平台的通用目的,旨在发布到公共领域并使用数十年.谢谢.

c++ stl

3
推荐指数
1
解决办法
1143
查看次数