c++ - 具有字符数组元素的结构的 STL 容器
问题描述
可以说我的结构如下所示 -
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);
所以我的问题是当阵列超出容量时,它必须移动到其他位置。谁将为成员结构分配内存?我是否必须编写自己的副本、赋值和移动操作或提供的编译器就足够了?默认提供的操作会做浅拷贝并产生问题吗?
解决方案
谁将为成员结构分配内存?
std::vector
将使用您提供的分配器分配内存(隐式地,使用默认参数)。
我是否必须编写自己的副本、赋值和移动操作或提供的编译器就足够了?
编译器提供的就足够了。
默认提供的操作会做浅拷贝吗
是的,尽管这取决于浅拷贝的含义。浅拷贝和深拷贝的区别只对引用类型有意义。
并制造问题?
不。你的类不包含指针/引用/迭代器,所以没有什么可以被深度复制,也没有问题。
推荐阅读
- java - Hibernate 验证不会因缺少字段而失败
- python - 如何将十亿或百万缩写的字符串转换为列表中的整数
- python - 重新标记熊猫中的值
- laravel - Laravel 5.6 空字段验证
- android - 仅当用户单击编辑文本框以插入文本时如何显示键盘?
- php - 在 CodeIgniter 中验证失败时重定向特定错误的页面
- json - 通过 Dictionary 对象解析 Json 响应
- python - 在 python、matplotlib、多臂老虎机中绘制正态分布
- angular - Typescript - 在运行时检查类型并警告错误
- c# - 使用 linq 检查 IEnumerable 列表的计数