是否可以将a移动vector<T*>到a vector<const T*>而不复制它而不依赖reinterpret_cast<>?即
vector<int*> get() {
return ...;
}
vector<const int*> getConst() {
return whatgoeshere(get());
}
Run Code Online (Sandbox Code Playgroud)
我将从另一个角度攻击这个.并解决可能的设计问题.你没有指定它的内容...,但假设get填充一个向量然后返回它,我的视图中的解决方案是解除在两个函数之外填充的代码.
template<typename Int>
void do_get(std::vector<Int*>& v) {
// Populate v
}
auto get() {
std::vector<int*> ret;
do_get(ret);
return ret;
}
auto getConst() {
std::vector<const int*> ret;
do_get(ret);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
填充逻辑的一个真实来源.虽然两个原始功能是相同的,但它可以忽略不计.此外,在一个理智的实现它不会做任何多余的副本,因为RVO是惊人的.
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |