有两种方法(据我所知)可以将一个 vector 分配给另一个 vector :
std::vector<std:string> vectorOne, vectorTwo;
// fill vectorOne with strings
// First assign method
vectorTwo = vectorOne;
// Second assign method
vectorTwo.assign( vectorOne.begin(), vectorOne.end() );
当对非常大的 vector 执行时,这些方法真的有区别吗?或者它们在效率和安全性方面是一样的?
最佳答案
它们几乎是等价的。第二个原因是 你可能有需要(隐式)转换的类型:
std::vector<int> vi;
std::vector<double> vd;
// ...
vd.assign( vi.begin(), vi.end() );
或者容器的类型可能不同:
vd.assign( std::istream_iterator<double>( file ),
std::istream_iterator<double>() );
如果您知道这两个容器是同一类型,只需 使用赋值。它的优点是只使用一个 对源的引用,并可能允许移动语义 C++11。
关于c++ - 这两个 std::vector 的赋值方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492750/