C++ ‘Using’ vs ‘Typedef’

C++ ‘Using’ vs ‘Typedef’

C ++有两个关键字可以用来定义新类型:typedef和using。这两个关键字都允许您创建一个新的类型名称,该名称可用于声明变量,但它们的工作方式略有不同。

typedef是一个旧关键字,自C ++语言开始以来一直存在。它用于创建一个新的类型名称,该名称是现有类型的别名。例如,您可以使用typedef为内置int类型创建一个名为MyInt的新类型的别名:

语法

typedef int MyInt;

在这个定义之后,您可以像使用int一样使用MyInt声明变量:

代码片段

MyInt x = 5;

using是在C++11中引入的一种较新的关键字。它的工作方式类似于typedef,但它有更灵活的语法,并且可以在代码中的更多地方使用。例如,您可以使用using以与typedef相同的方式定义一个新的类型名:

代码片段

using MyInt = int;

这会创建一个名为MyInt的新类型,它是内置的int类型的别名。然后,您可以使用MyInt来声明变量,就像使用int一样。

总的来说,在C++中使用using被认为是一种更现代和灵活的定义新类型名称的方式。typedef仍然支持向后兼容,但最新的代码应该使用using。

下面是使用using关键字定义一个名为MyInt的新类型的示例,它是内置的int类型的别名:

示例1

#include 

// Define a new type named MyInt that is an alias for int
using MyInt = int;
// The main driver code functionality ends from here
int main()
{
    // Declare a variable of type MyInt
    MyInt x = 5;

    // Print the value of the variable
    std::cout << "x = " << x << std::endl;

    return 0;
// The main driver code functionality ends from here
}

这段代码将打印以下输出:

x = 5

请注意,using 并不仅限于定义内置类型(如 int)的类型别名。您可以使用它来为任何类型定义类型别名,包括用户定义的类型,模板类型等等。

示例2

#include 
#include 

using namespace std;

int main()
{
    // Create a vector of integers with an initial capacity of 5 elements
    vector numbers(5);

    // Add some elements to the vector
    numbers.push_back(10);
    numbers.push_back(20);
    numbers.push_back(30);
    numbers.push_back(40);
    numbers.push_back(50);

    // Print the size and capacity of the vector
    cout << "Size: " << numbers.size() << endl;
    cout << "Capacity: " << numbers.capacity() << endl;

    // Remove the last element from the vector
    numbers.pop_back();

    // Print the size and capacity of the vector after removing an element
    cout << "Size: " << numbers.size() << endl;
    cout << "Capacity: " << numbers.capacity() << endl;

    // Clear all elements from the vector
    numbers.clear();

    // Print the size and capacity of the vector after clearing
    cout << "Size: " << numbers.size() << endl;
    cout << "Capacity: " << numbers.capacity() << endl;

    return 0;
}

输出:

Size: 10
Capacity: 10
Size: 9
Capacity: 10
Size: 0
Capacity: 10

在这段代码中,我们创建了一个可以容纳整数序列的’向量’对象。然后,我们使用’push_back’方法向向量中添加一些元素,并打印其大小和容量。接下来,我们使用’push_back’方法从向量中删除最后一个元素,并再次打印其大小和容量。

typedef示例

#include 
#include 

using namespace std;

// Create an alias for a vector of integers
typedef vector IntVector;

int main()
{
    // Create a vector of integers using the alias
    IntVector numbers;

    // Add some elements to the vector
    numbers.push_back(10);
    numbers.push_back(20);
    numbers.push_back(30);

    // Print the elements of the vector
    for (IntVector::iterator it = numbers.begin(); it != numbers.end(); ++it)
    {
        cout << *it << " ";
    }

    return 0;
}

输出:

10 20 30

在此代码中,我们使用’typedef’关键字为’integers’的’vector’创建一个别名’IntVector’。然后,我们使用这个别名创建一个’vector’对象并添加一些元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程