gpt4 book ai didi

c++ - STL 复制、对、 vector 和插入器

转载 作者:行者123 更新时间:2023-11-30 02:22:48 25 4
gpt4 key购买 nike

我有一个输入:

1 a
2 b
..

我想将它们插入成对的 vector 中,具有复制功能,如下所示:

#include <vector>
#include <iterator>
#include <algorithm>
#include <iostream>

int main(void) {
std::vector<std::pair<int, char>> v;
std::copy(std::istream_iterator<std::pair<int, char>>(std::cin), std::istream_iterator<std::pair<int, char>>(), std::back_inserter(v));
for(auto pair: v)
std::cout << pair.first << std::endl;
return 0;
}

但是,这不会编译:错误:'operator>>'不匹配,因为它可能需要运算符重载。

这是否意味着我必须创建自己的类,继承自 std::vector,然后重载运算符?

我想避免使用我自己的类,而不是标准的 vector 类。

最佳答案

问题不在于 std::vector ,它是 std::istream_iterator .原因是 std::pair没有定义反序列化运算符。

您仍然可以使用 std::vectorstd::back_insert_iterator ,但您需要定义自己的输入迭代器。一个读取成对的值。

有些人可能会建议你定义operator>>对于你的对,但这是一种不可靠的技术。这将取决于在包含 <algorithm> 之前定义的运算符和 <iterator> .

关于c++ - STL 复制、对、 vector 和插入器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46883289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com