C++ 使用c+迭代向量矩阵+;自动范围和结构化绑定?
我想这样做:C++ 使用c+迭代向量矩阵+;自动范围和结构化绑定?,c++,c++17,std,C++,C++17,Std,我想这样做: vector<vector<int>>& matrix; -> [[1, 1], [2, 2]] for (auto [a, b] : matrix) { ... } 向量和矩阵;->[[1, 1], [2, 2]] 用于(自动[a,b]:矩阵){ ... } 这不适合我。这是正确的方法吗?如果不是,为什么? < P>以上的方法只对C++中的映射进行迭代是有效的。如果d是无序映射,那么它可以通过下面的代码进行迭代 for(auto
vector<vector<int>>& matrix; -> [[1, 1], [2, 2]]
for (auto [a, b] : matrix) {
...
}
向量和矩阵;->[[1, 1], [2, 2]]
用于(自动[a,b]:矩阵){
...
}
这不适合我。这是正确的方法吗?如果不是,为什么? < P>以上的方法只对C++中的映射进行迭代是有效的。如果d是无序映射,那么它可以通过下面的代码进行迭代
for(auto& [a,b] : d)
{
count<< "First" << a.first << "Second" << a.second <<endl;
}
(自动和[a,b]:d)的
{
count您只能将结构化绑定用于存储,存储的位置可以在编译时确定,即绑定到数组或类存储。Vector的数据存储是动态的,您不能绑定到包含相邻元素的内容。
您可以将该列表绑定到现有类型的成员,例如,如果vector包含一对、一个元组或任何类似的结构
#include <string>
#include <vector>
#include <tuple>
#include <iostream>
int main()
{
std::vector<std::tuple<int,int, std::string>>
v = {{1,3,"aa"},{3,5,"bb"}};
for(auto& [a,b,s] : v)
{
std::cout << a << b << s << std::endl;
}
return 0;
}
#包括
#包括
#包括
#包括
int main()
{
向量
v={1,3,“aa”},{3,5,“bb”};
对于(自动和[a,b,s]:v)
{
std::cout不仅是map,而且是任何获得一对或等效元素的容器。例如,在编译期间绑定列表必须对应于类型jnown。这就是为什么它不能用于绑定vector的两个元素
#include <string>
#include <vector>
#include <tuple>
#include <iostream>
int main()
{
std::vector<std::tuple<int,int, std::string>>
v = {{1,3,"aa"},{3,5,"bb"}};
for(auto& [a,b,s] : v)
{
std::cout << a << b << s << std::endl;
}
return 0;
}