假设我的结构如下所示 -
struct Member
{
Membe(char* member1In, char* member2In)
{
strcpy(member1, member1In);
strcpy(member2, member2In);
}
char member1[10];
char member2[10];
};
和 std::vector 声明为
std::vector<Member> members{};
然后我使用 emplace_back()
插入值,如下所示
members.emplace_back(value1, value2);
所以我的问题是当阵列超出容量时,它必须移动到其他位置。谁来为成员结构分配内存?我是否必须编写自己的复制、分配和移动操作或提供的编译器就足够了?默认提供的操作是否会进行浅拷贝并产生问题?
最佳答案
Who will allocate memory for Member structure ?
std::vector
将使用您提供的分配器分配内存(隐含地,通过使用默认参数)。
Do I have to write my own copy, assignment and move operations or compiler provided are enough ?
编译器提供的就够了。
Will default provided operation do shallow copy
是的,尽管这取决于浅拷贝的含义。浅拷贝和深拷贝的区别只对引用类型有意义。
and create problem ?
没有。您的类不包含指针/引用/迭代器,因此没有任何可以深度复制的内容,也没有问题。
关于c++ - 具有字符数组元素的结构的 STL 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62575030/