Ana*_*hah 2 c++ stl vector c++11
假设我的结构如下所示 -
struct Member
{
Membe(char* member1In, char* member2In)
{
strcpy(member1, member1In);
strcpy(member2, member2In);
}
char member1[10];
char member2[10];
};
Run Code Online (Sandbox Code Playgroud)
和 std::vector 声明为
std::vector<Member> members{};
Run Code Online (Sandbox Code Playgroud)
我使用emplace_back()下面的方法插入值
members.emplace_back(value1, value2);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是当阵列增长超出容量时,它必须移动到其他位置。谁将为成员结构分配内存?我是否必须编写自己的复制、赋值和移动操作或提供的编译器就足够了?默认提供的操作会做浅拷贝并产生问题吗?
谁将为成员结构分配内存?
std::vector 将使用您提供的分配器分配内存(隐式地,通过使用默认参数)。
我是否必须编写自己的复制、赋值和移动操作或提供的编译器就足够了?
编译器提供的就足够了。
将默认提供的操作做浅拷贝
是的,尽管这取决于浅拷贝的含义。浅拷贝和深拷贝的区别只对引用类型有意义。
并制造问题?
不。您的类不包含指针/引用/迭代器,因此没有任何可以深入复制的内容,也没有问题。