当前位置: 首页 > 知识库问答 >
问题:

C++用另一个名称[duplicate]重命名STL向量

幸鸿轩
2023-03-14

我能得到以下C++代码的澄清吗。它创建一个名为gsequence的函数的函数模板。我试图理解返回类型dyn_vector

template <class T>
using dync_vector = std::vector<T>;

template <class T_data>
dyn_vector<T_data> gSequence(size_type dataSize)
{
    dyn_vector<T_data> result(dataSize);

    return result;

}

共有1个答案

阎建中
2023-03-14

这不是一个重新定义。作为@N.M.暗示,它是一个(模板化)类型的别名,有点像。

首先,让我们忘掉模板。假设我正在进行一次考试,我使用int值来表示学生的成绩。我可以写:

typedef int grade_t;

之后,我将使用grade_t来表示变量或参数,这些变量或参数将某事物视为考试等级。现在,编译器会让这些函数使用int,但当我们阅读代码时,我们会更好地理解其含义。此外,如果我们想要更改等级类型(例如,允许分数等级值),这也会对我们有所帮助。

好的,这是一个类型别名--这是您可能已经知道的非常基本的东西。那么使用业务呢?嗯,是一样的...也就是说,声明:

using grade_t = int;

与上面列出的typedef语句的含义完全相同。它是C++中更现代的语法(2011年采用)。

现在模板又回到了画面中。std::vector是类模板(因此也是类型模板),本身不是类型。它有两个参数,当设置时,给我们一个具体的类型:

template<
    class T,
    class Allocator = std::allocator<T>
> class vector;

如果我们没有指定其他内容,第二个模板参数将获得默认值。现在,dyn_vector也是一个模板,但只有一个参数,即它与std::vector类似,但绝对保证只使用默认分配器。这就是为什么我用一个“sort of”来限定上面的第一句。

 类似资料:
  • 我有一个原型项目,它的外观如下所示(有两个模块,和): 并且,当我使用工件id为“infra”的原型生成一个项目时,它应该生成如下结构: 不起作用的是,在父pom.xml中,我包含了以下模块: 这些模块条目不会被重命名为类似于(在生成时): 这就是我想要的。 知道怎么做吗,谢谢。 更新我在这里按要求添加元数据xml文件,但我不想修改archetype-metadata.xml文件。因为我想使用cr

  • 我想用C重命名并保留源文件。我用这个来重命名文件。 例如: 重命名(source_file.txt,destination_file.txt); 在这里,我想保留source_file.txt.默认情况下,这个函数会删除source_file并将其保存为destination_file。

  • 在迁移等所有艰难的工作之后,只要意识到如果需要使用CNAME(例如media.abc.com)来服务内容。bucket名称需要以media.abc.com/s3/Amazon.com开头,以确保它完美地工作。 只需意识到S3不允许从控制台直接重命名。 有什么办法可以解决这个问题吗?

  • 嗨,有没有一种方法,我可以重命名的包名称使用这种格式 而不是仅仅 我尝试使用我想要的包名称,但它一直得到 或com+最后一个字后的最后一个“。 我这样做的原因是,我有一个需要一个包名,而我在该库中设置的包名是固定的,我不能更改它 对不起,我的英语不好

  • 我的数据库里有两个表叫做 编号列表和编号状态 我目前正在使用下面的查询获得完美的结果 现在我要number_list的名字。两个表都有编号是通用的。我已经尝试了一些左连接等,但我正在学习MySQL,所以没有得到适当的结果。如果有人能帮我做这件事,请告诉我。谢啦

  • 假设be有两个变量 有了上面的信息,是否有方法使?