c++ - 在 C++ 中迭代包含指针的 vector

标签 c++ c++11 rapidjson

我有一个函数接受指向 rapidjson::Value 类型的指针,并将该位置的项目存储到类型为 kArrayType 的 rapidjson::Value 中。

void addBlock(rapidjson::Value* block) {
    blocksArray.PushBack(*block, allocator);
}

此函数按预期工作。

为了扩展它,我想添加一个函数,可以将这些指针的 vector 作为输入。我试过这样做:

void addBlocks(std::vector<rapidjson::Value*> blocks) {
    for (const rapidjson::Value& block : blocks) {
        blocksArray.PushBack(*block, allocator);
    }
}

但这不起作用。它在 Visual Studio 中给了我两个红色波浪。

函数的参数声明中 block 下面的第一个,说:

C++ no suitable constructor exists to convert from to...

PushBack() 的调用中 * 下面的第二个,说:

C++ no operator matches these operands operand types are: * const rapidjson::Value

我的猜测是我犯了一些非常基本的错误,而我只是错过了。

最佳答案

看来你是在复制,那为什么不使用一些std算法呢?

void addBlocks(std::vector<rapidjson::Value*> blocks) {
    std::transform(
        blocks.begin(),
        blocks.end(),
        std::back_inserter(blocksArray),
        [](rapidjson::Value* ptr){ return *ptr; });
}

关于c++ - 在 C++ 中迭代包含指针的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59104854/

相关文章:

c++ - 搜索集合数组的更快方法

c++ - 自动扣除失败并显示消息 "inconsistent deduction for auto return type"

c++ - 如果从析构函数调用纯虚函数是UB,为什么我们可以使用纯虚析构函数?

c++ - 客户端断开连接后处理服务器应用程序中的线程

c++ - 隐式移动与复制操作和遏制

c++ - 为 rapidjson readBuffer 设置合适的大小

json - RapidJson 和 Boost Json 解析器

c++ - 将构造函数添加到模板化类

c++11 - cocos2dx 3.0如何调用callfunc函数

c++ - RapidJSON 如何在使用 FindMember 时接收成员对象