【发布时间】:2021-08-19 16:37:49
【问题描述】:
我正在尝试将以下代码从 C++ 转换为 C。
我创建了一个数组,但我不确定什么可以精确替换 emplace() 和 reserve() 以及 size_t,在这种情况下可以做什么?
template<size_t X>
Student(float const(&rollnums)[X][5])
{
class.reserve(X);
for(size_t i =0; i< X; i++)
{
class.emplace(class.end(), rollnums[i];
}
地点:
typedef struct _student
{
std::vector<float> class;
}student;
【问题讨论】:
-
也许在关注
emplace和reserve的实现之前,您应该(以典型的C 风格)首先关注数据结构。要替换std::vector,您需要管理指针、分配的大小和使用的大小。 -
emplace只是将其构建到位;这是 C 语言中的自然默认值。 -
要转换,您需要完全重写代码。不要尝试翻译。
-
emplace和reserve的存在主要是为了避免冗余的构造函数调用。 C 没有构造函数,所以这很没有实际意义。
标签: c++ c vector size-t emplace