我是 C++11 的新手,我对std::refence_wrapper
类的使用感到困惑。
让我们考虑https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper中显示的示例
,它对包含在标准中的元素进行了洗牌std::vector
,即:
std::vector<int> l(10);
std::iota(l.begin(), l.end(), -4);
std::vector<std::reference_wrapper<int>> v(l.begin(), l.end());
std::shuffle(v.begin(), v.end(), std::mt19937{std::random_device{}()});
现在,如果考虑原始向量l
,我会l.data()
返回一个指向内部数组的指针,我可以在 C 应用程序中使用它。
相反,我不清楚v.data()
. 我尝试了各种肯定错误的演员组合,例如int* p = (int*)(v.data()->get())
没有获得正确的结果(交换的值)。
我的目标是将 C++ 应用程序(它给了我一个引用包装器的向量)与旧的 C 库接口。v
在示例中显示的随机播放之后,您能指出从 vector 获取类 C 数组的最正确方法吗?我是否需要将所有元素一个接一个地复制到另一个向量中?是否有任何 C++11 课程可以帮助我完成这项工作?谢谢