C++中的using 和 Typedef对比

C++中的using 和 Typedef对比

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

typedef是一个比较古老的关键字,从一开始就是c++语言的一部分。它用于创建一个新的类型名,该类型名是现有类型的别名。例如,你可以使用typedef来创建一个名为MyInt的新类型,它是内置int类型的别名:

语法

typedef int MyInt;

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

片段

MyInt x = 5;

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

片段

using MyInt = int;

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

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

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

C++ 代码(示例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

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

C++ 代码(示例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

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

C++ 代码(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关键字为整数vector创建了一个名为IntVector的别名。然后我们使用这个别名来创建一个vector对象并向其添加一些元素。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程