如何使用初始化列表初始化2D矢量?对于正常的向量做:
vector<int> myvect {1,2,3,4};
Run Code Online (Sandbox Code Playgroud)
就够了 但对于2D人来说:
vector<vector<int>> myvect{ {10,20,30,40},
{50,60,70,80}
};
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
我怎么能用它来迭代呢?
for(auto x: myvect)
{
cout<<x[j++]<<endl;
}
Run Code Online (Sandbox Code Playgroud)
这仅用于显示:10,1!
顺便说一下这是什么意思?
vector<int> myvect[5] {1,2,3,4};
Run Code Online (Sandbox Code Playgroud)
我在这里看到它并且无法理解它!链接
dyp*_*dyp 12
这样做的正确方法是什么?
你展示的方式是一种可能的方式.你也可以使用:
vector<vector<int>> myvect = { {10,20,30,40},
{50,60,70,80} };
vector<vector<int>> myvect{ vector<int>{10,20,30,40},
vector<int>{50,60,70,80} };
Run Code Online (Sandbox Code Playgroud)
第一个构造一个std::initializer_list<std::vector<int>>元素从内部braced-initializer-lists直接初始化的位置.第二个显式构造临时向量,然后将其移入a std::initializer_list<std::vector<int>>.这可能没有什么区别,因为这一举动可以省略.
无论如何,它的元素std::initializer_list<std::vector<int>>被复制回myvect(你不能移出a std::initializer_list).
我怎么能用它来迭代呢?
你基本上有一个向量向量,因此你需要两个循环:
for(vector<int> const& innerVec : myvect)
{
for(int element : innerVec)
{
cout << element << ',';
}
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
我没有使用auto明确显示结果类型.
顺便说一下这是什么意思?
这可能是一个错字.就目前而言,这是非法的.声明vector<int> myvect[5];声明一个5vector<int>的数组.因此,下面的列表初始化需要初始化数组,但是这个列表的元素不能隐式转换为vector<int>(有一个ctor,它需要a size_t,但它是显式的).
这一点已在该方的评论中指出.
我想作者想写std::vector<int> vArray = {3, 2, 7, 5, 8};.
| 归档时间: |
|
| 查看次数: |
7267 次 |
| 最近记录: |