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