我有一个元素,它是std::optional中的std::vector。现在我想把一个元素放到向量中(通过emplace_back):
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <optional>
int main()
{
    std::optional<std::vector<uint8_t>> optvec;
    optvec->reserve(1);
    optvec->emplace_back(1);
    std::cout << optvec.has_value() << std::endl;
    return 0;
}但是,对于内存,这会正确地嵌入元素本身,但可选部分不会得到存在元素的信息,所以它是一个nullopt。
有没有其他方法可以做到这一点?提前谢谢。
发布于 2021-07-14 17:47:36
您的optional不包含任何向量。optional的默认构造函数将其构建为不包含任何值的对象。
您可以简单地
std::optional<std::vector<uint8_t>> optvec = std::vector<uint8_t>();或者..。
std::optional<std::vector<uint8_t>> optvec;
optvec.emplace();然后在你的optional中有一个实际的向量
https://stackoverflow.com/questions/68375672
复制相似问题