那么是否可以像指针一样使用迭代器访问二维向量中的所有元素?
So is that possible to using iterator access all element in 2 dimensional vector just like pointer?
看下面的代码(我知道不对):
std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto it = ivec.begin(); it != ivec.end(); it++)
{
for (auto itr = it.begin(); itr != it.end(); itr++)
{
std::cout << *itr << std::endl;
}
}
我设置了一个二维向量 ivec。现在我想使用迭代器而不是下标访问每个元素。我知道指针是一个特殊的迭代器。那么是否可以像指针一样使用迭代器访问二维向量中的所有元素?
您问的是:
So is that possible to using iterator access all element in 2 dimensional vector just like pointer?
是的,是的。
想法不错。不过,您发布的代码中存在语法错误。
std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto it = ivec.begin(); it != ivec.end(); it++)
{
// for (auto itr = it.begin(); itr != it.end(); itr++)
for (auto itr = it->begin(); itr != it->end(); itr++)
{
std::cout << *itr << std::endl;
}
}
您可以使用范围-for
循环进一步简化它。
std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto& it : ivec)
{
for (auto itr : it)
{
std::cout << itr << std::endl;
}
}
看下面的代码(我知道不对):
std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto it = ivec.begin(); it != ivec.end(); it++)
{
for (auto itr = it.begin(); itr != it.end(); itr++)
{
std::cout << *itr << std::endl;
}
}
我设置了一个二维向量 ivec。现在我想使用迭代器而不是下标访问每个元素。我知道指针是一个特殊的迭代器。那么是否可以像指针一样使用迭代器访问二维向量中的所有元素?
您问的是:
So is that possible to using iterator access all element in 2 dimensional vector just like pointer?
是的,是的。
想法不错。不过,您发布的代码中存在语法错误。
std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto it = ivec.begin(); it != ivec.end(); it++)
{
// for (auto itr = it.begin(); itr != it.end(); itr++)
for (auto itr = it->begin(); itr != it->end(); itr++)
{
std::cout << *itr << std::endl;
}
}
您可以使用范围-for
循环进一步简化它。
std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto& it : ivec)
{
for (auto itr : it)
{
std::cout << itr << std::endl;
}
}