标题,
假设我们有
std::vector<MyObj*> ArrayOfPtr;
std::vector<MyObj const *> ArrayOfPtrToConstObj;
int main()
{
//I'd like to give ArrayOfPtr to another obj/function but not give it the right to modify the objects in it.
ArrayOfPtrToConstObj = ArrayOfPtr;
Function(ArrayOfPtrToConstObj)
}
考虑到const不会改变逻辑(优化或其他任何东西),为什么不能用C++编写并由编译器自动理解呢?
是否有一种从 vector 1到 vector 2的快速方法,而无需for / while循环到数组上并填充第二个数组?
最佳答案
好吧,有人,某个地方将不得不循环。您可以避免使用vector::assign
自己编写循环:
ArrayOfPtrToConstObj.assign(ArrayOfPtr.begin(), ArrayOfPtr.end());
但是
assign
仍然会循环。首选的现代解决方案是传递const-iterator / pointer对并让用户使用它们,或者使用诸如
gsl::span
的 View 类。这不需要任何复制,可以根据需要添加const
:gsl::span<MyObj const*> spn(ArrayOfPtr.data(), ArrayOfPtr.size());
关于c++ - std::vector <MyObj *>到std::vector <MyObj Const *>,如何不循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47398779/