如何以相反的顺序将整个向量复制到队列中
How to copy whole vector into queue in reversed order?
我的向量按升序存储某个图的顶点数。我想将这些数字添加到队列中,以便稍后在代码中运行 BFS,但我不知道如何以漂亮和快速的方式做到这一点。我希望解决方案清晰,每个人都可以阅读,在我看来,我带来的东西是晦涩难懂的。免责声明 - 我使用静态转换,因为我讨厌在使用Qt时看到警告。以下是所做的事情:
使用休闲 for 循环以相反的顺序遍历向量,从 size-1
开始,到 i
等于 -1
时结束。因为我使用-1
作为规则,所以我需要将所有内容都投射到int
上,这使得代码变得丑陋。
vector<unsigned> v;
v.pushback(2);
v.pushback(3);
v.pushback(5);
queue<unsigned> q;
for(int i = static_cast<int>(v.size()-1); i>=0; i--)
q.push(v[static_cast<unsigned>(i)];
有人可以告诉我专业人士是如何做到的吗?找不到类似"反向顺序复制"功能的东西,可以从.end()-1
元素开始并复制包括.begin()
元素在内的所有元素?
std::vector
提供了函数rbegin
和rend
,这些函数返回可用于从后到前迭代的反向迭代器。 使用这些元素,您可以使用std::for_each
迭代向量,然后使用 lambda 作为函子将每个元素推送到队列中。 那看起来像
std::vector<int> v = {1, 2, 3};
std::queue<int> q;
std::for_each(v.rbegin(), v.rend(), [&q](auto el){ q.push(el); });
相关文章:
- 将指向给定子类的指针从一个向量复制到另一个向量
- 将字符向量复制到另一个向量
- 将shared_ptr的向量复制到抽象基的派生类
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 自定义类对象的C++向量 - 复制构造函数已删除 - std::ifstream
- 如何在C++中将一个对象从一个向量复制到另一个向量?
- 将特征向量复制到 C 数组
- 将std ::向量复制到CV :: Mat_的行操作相同
- 将向量复制到 std::string
- 如何以相反的顺序将整个向量复制到队列中
- 按索引将类类型元素从一个向量复制到另一个 c++
- 使用迭代器将向量复制到数组中
- 为什么是非法的:将指针向量复制到指向常量的指针向量中
- 将元素从一个向量复制到另一个向量的最有效方法,给定一个不被复制的索引列表
- C++-将数据从浮点向量复制到uint8向量
- 将字符串从向量复制到字符串
- 我可以使用STD ::复制将数据的位模式从整数向量复制到一系列未签名的字符
- 将指针从一个向量复制到另一个向量;地址指出了变化
- 如何将内容从一个字符串向量复制到另一个字符串向量
- 以相反的顺序将一个向量复制到另一个向量