C++ 迭代器语法
C++ Iterator Syntax
我对用于实例化迭代器的 C++ 语法感到困惑,即(对于列表),
std::list<C++ class object>::iterator iterator_name;
::iterator
之前的 std::list
是怎么回事,这是否意味着 iterator
是在 std
中的命名空间 list
中定义的?
抱歉,如果这个问题很明显或微不足道,但我终于说服自己更多地使用 "std",现在我发现一些语法有点混乱。
iterator
是 class 模板 std::list
的 嵌入成员类型 。 std
是标准库命名空间。
范围解析运算符::
用于访问命名空间和classes中的名称,应查阅文档(或源代码)以获取名称的确切定义。
在这种情况下,iterator
是大多数标准库容器的嵌入式类型。它通常也用于以标准库为模型的容器,但它不是任何给定 class 的一般要求。
std::list<>
不是命名空间,它是模板 class,iterator
是此模板中的类型。要访问它,请使用双冒号。
是会员类型。 std::list
模板 class 的(概念上)定义如下:
template<typename T>
class list {
public:
using iterator = /* some implementation-dependent type */
};
因此,无论您使用的是哪种标准库实现,您都知道,对于某些 T
,std::list<T>::iterator
是实现列表迭代器的类型的别名。
std::list
是模板 class。说 std::list< T >::iterator
意味着你有一个列表的迭代器而不是向量的迭代器(std::vector< T >::iterator
)或任何其他容器。
如果你觉得名字太长你也可以使用auto
如果你初始化迭代器:
auto it = myList.begin();
std::list::迭代器obj_iterator; // 意思是声明类型为std::list
的指针obj_iterator
//simple code snippet
std::list<int> intList; // declaring intList of type std::list<int>
for (int i = 0; i < 10; ++i) {
intList.push_back( 1 << i );
}
std::list<int>::iterator int_iterator; //declaring pointer int_iterator of type std::list<int>
for (int_iterator = intList.begin(); int_iterator != intList.end(); ++int_iterator) {
std::cout << *int_iterator; // using of int_iterator
}`
我对用于实例化迭代器的 C++ 语法感到困惑,即(对于列表),
std::list<C++ class object>::iterator iterator_name;
::iterator
之前的 std::list
是怎么回事,这是否意味着 iterator
是在 std
中的命名空间 list
中定义的?
抱歉,如果这个问题很明显或微不足道,但我终于说服自己更多地使用 "std",现在我发现一些语法有点混乱。
iterator
是 class 模板 std::list
的 嵌入成员类型 。 std
是标准库命名空间。
范围解析运算符::
用于访问命名空间和classes中的名称,应查阅文档(或源代码)以获取名称的确切定义。
在这种情况下,iterator
是大多数标准库容器的嵌入式类型。它通常也用于以标准库为模型的容器,但它不是任何给定 class 的一般要求。
std::list<>
不是命名空间,它是模板 class,iterator
是此模板中的类型。要访问它,请使用双冒号。
是会员类型。 std::list
模板 class 的(概念上)定义如下:
template<typename T>
class list {
public:
using iterator = /* some implementation-dependent type */
};
因此,无论您使用的是哪种标准库实现,您都知道,对于某些 T
,std::list<T>::iterator
是实现列表迭代器的类型的别名。
std::list
是模板 class。说 std::list< T >::iterator
意味着你有一个列表的迭代器而不是向量的迭代器(std::vector< T >::iterator
)或任何其他容器。
如果你觉得名字太长你也可以使用auto
如果你初始化迭代器:
auto it = myList.begin();
std::list::迭代器obj_iterator; // 意思是声明类型为std::list
的指针obj_iterator//simple code snippet
std::list<int> intList; // declaring intList of type std::list<int>
for (int i = 0; i < 10; ++i) {
intList.push_back( 1 << i );
}
std::list<int>::iterator int_iterator; //declaring pointer int_iterator of type std::list<int>
for (int_iterator = intList.begin(); int_iterator != intList.end(); ++int_iterator) {
std::cout << *int_iterator; // using of int_iterator
}`