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’对象并添加一些元素。