- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在以下代码的 main()
函数内的 for 循环中,我可以更改变量 ab
内的变量,即使 const auto&
在循环中使用。有什么办法可以避免这种情况吗?
#include <functional>
#include <iostream>
#include <vector>
#include <string>
#include <boost/iterator/zip_iterator.hpp>
#include <boost/tuple/tuple.hpp>
using namespace std;
struct MyClass {
std::vector<int> a{11, 21, 41};
std::vector<int> b{1, 2, 4};
typedef boost::zip_iterator<boost::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>> const_iterator;
typedef boost::zip_iterator<boost::tuple<std::vector<int>::iterator, std::vector<int>::iterator>> iterator;
const_iterator begin() const {
return const_iterator(boost::make_tuple(a.cbegin(), b.cbegin()));
}
const_iterator end() const {
return const_iterator(boost::make_tuple(a.cend(), b.cend()));
}
iterator begin() {
return iterator(boost::make_tuple(a.begin(), b.begin()));
}
iterator end() {
return iterator(boost::make_tuple(a.end(), b.end()));
}
};
int main(int argc, char** argv)
{
MyClass myc;
for (const auto &ab: myc)
ab.get<0>() = 66;
return 0;
}
最佳答案
如果你遍历 const MyClass
那么你会得到你想要的编译错误:
for (const auto &ab: const_cast<MyClass const&>(myc))
ab.get<0>() = 66;
您可以使用 std::as_const
而不是 const_cast
:
for (const auto &ab: std::as_const(myc))
ab.get<0>() = 66;
这是有效的,因为 begin
和 end
的 const
重载将被调用,并且它们返回一个 zip_iterator
const 迭代器。
关于c++ - boost zip_iterator 忽略 const 正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46199343/
我不知道如何用 zip_iterator 调用 lower_bound。 这不会编译: #include #include #include void main() { typedef
问题 我正在使用 sort_by_key使用 zip_iterator 传递值.此 sort_by_key被多次调用,经过一定的迭代后变为 10x 较慢 !这是什么原因引起的性能下降 ? 症状 我正在
在以下代码的 main() 函数内的 for 循环中,我可以更改变量 ab 内的变量,即使 const auto& 在循环中使用。有什么办法可以避免这种情况吗? #include #include
我想计算 用于载体 和 , 其中表示 vector 的大小 .由于这涉及对两个 vector 的每个对应分量之间的差的平方和求平方根,因此它应该是一个高度可并行化的任务。我在 Windows 10 上
我在这里查看了很多问题以寻找类似的问题,并且有很多问题,尽管有一个小改动。我正在尝试使用 zip_iterator 作为复合键对值进行排序。 具体来说,我有以下功能: void thrustSort(
我想做的是通过 thrust::reduce_by_key 按键获取平均值.我先sort_by_key这对于 reduce_by_key 的连续键分组工作得很好.我用了this帮助我走到这一步。但是,
以下代码无法为我编译: #include #include #include typedef boost::tuple EntryTuple; struct zip_func : publi
考虑以下代码: #include #include #include #include #include typedef boost::range_detail::any_iterator,
我有两个 vector ,我想以 CSV 格式写入文件。我可以使用 for 循环“手动”执行此操作,但我第一次尝试使用 boost zip_iterator。这就是我能做到的程度。 ( online
使用 std::get<>() 有哪些选择?和 std::tie<>()与 boost 结构一起? 例子:我想使用基于范围的 for 循环对多个容器进行迭代。我可以实现 zip函数,它使用 boost
我是一名优秀的程序员,十分优秀!