我正在编写一种算法,该算法将一些数据写入提供的输出范围(问题的初始文本包括具体内容,并将注释中的讨论变成错误的方向)。我希望它在API中与标准库中的其他范围算法尽可能接近。
我查看了的实例的最新草案std::ranges::output_range,发现只有2种算法:
他们俩都回来了std::ranges::safe_iterator_t。我认为返回是合乎逻辑的std::ranges::safe_subrange_t。即使您写入输出流,在这种情况下,您仍然可以返回迭代器-前哨对,并将该范围向下传递。
我找到了P0970,看起来好像std::ranges::safe_subrange_t是后来添加的。也许算法根本没有更新?还是有其他原因?
因此,过去我通过std::chrono::duration引用const 传递值,但现在我认为它们只不过是包装在类中的单个算术类型,因此按值传递它才有意义。
有没有人介绍过它?
给定一个包含相同基本类型序列的结构,如下所示:
struct Vector
{
float x;
float y;
float z;
};
Run Code Online (Sandbox Code Playgroud)
会员之间可以填充吗?我得到了[class.mem]的链接,说明可以添加填充以实现对齐,但在这种情况下它是否适用?
我在Docker容器中有一个bash脚本,需要通过ssh访问远程服务器.我在变量中有SSH密钥.如何将其添加到SSH?
在我学习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()?我应该允许用户手动设置容器的最大大小,如果不允许,我该如何检查溢出?
我知道不可能有一个通用的方法,因此我想听听其他编码人员和框架供应商使用的政策.我正在开发的库是跨平台的通用目的,旨在发布到公共领域并使用数十年.谢谢.