假设我有 boost::array<std::set<std::string>, 100000> arr1, arr2; 在填充了arr1之后,我执行arr2=arr1。 这是否像stl容器那样复制所有元素到arr2中,还是只是改变了arr2指针指向与arr1相同的数组? 如果第一个选项是正确的,当我按值传递arr1给函数时会发生什么?
这里有一个参考文献: template<typename U> array& operator=(const array<U, N>& other); Effects: std::copy(rhs.begin(),rhs.end(), begin()) 请注意Effects是什么。如果您的实现支持,还应考虑使用std::array而不是boost::array。
arr1
时,你会创建一个副本(除非有复制省略的范围,但这似乎不太可能)。 - juanchopanzastd::array
)也是如此。容器拥有自己的副本,这意味着当它们被复制时,每个副本都必须拥有其内容,这意味着需要复制内容。 - juanchopanza