【发布时间】:2023-03-09 12:29:01
【问题描述】:
使用Range library for C++14/17/20 extension 我注意到,当我存储range::views::method() 操作的一些结果时,在运行时,原始数据的每次更改或更新都会对其新构造的结果造成相同的更改,即使在事件(指令)。
有一个链接,但模式是什么,我们应该知道什么?
在这个例子中,我使用了ranges::views::reverse()
#include <iostream>
#include <vector>
#include <range/v3/all.hpp>
int main()
{
std::vector<int> values{1,2,3,4,5};
auto reversed = ranges::views::reverse(values);
values[3] = 0;
for(auto const& it : values){
std::cout<<it<<" ";
}
std::cout<<std::endl;
for(auto const& it : reversed){
std::cout<<it<<" ";
}
return 0;
}
输出:
1 2 3 0 5
5 0 3 2 1
values 的第 4 个值已更改,reversed 也是如此。
【问题讨论】: