使用auto关键字填充双索引向量
Using auto keyword to fill doubly-indexed vector
尝试更好地学习auto
关键字。我想使用auto
关键字分配一个双索引的vector
,但当我打印矢量(应该是所有的0
)时,它会打印空白,但要打印矢量的正确"形状"。
MWE:
#include <iostream>
#include <vector>
void DisplayVector(const std::vector<std::vector<double> >& vec)
{
std::cout << "vector: nn";
for (auto i : vec)
{
for (auto j : i)
{
std::cout << j << " ";
}
std::cout << "n";
}
std::cout << "n";
}
int main()
{
std::vector<std::vector<double> > vec1, vec2;
/* what I want to work */
vec1.resize(5);
for (auto i : vec1)
{
i.resize(3);
}
DisplayVector(vec1);
/* "old" way of doing it */
vec2.resize(5);
for (int i = 0; i < 5; ++i)
{
vec2[i].resize(3);
}
DisplayVector(vec2);
}
这导致
vector:
vector:
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
做这件事的正确方法是什么?是首选吗?也接受对代码实现的批评:)
在您的使用中,auto
本身将处理值,因此将调整vec1
中向量副本的大小。
使用vec1更改循环以使用参考
for (auto &i : vec1)
{
i.resize(3);
}
还要更改DisplayVector()
中的两个循环以使用const auto &
(const
引用,而不是按值)。这不会改变输出,但可以避免复制矢量。
注:v154c1和Neil kirk在评论中说了基本相同的话。
相关文章:
- 在C++中调整向量中的索引
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 将转换字符键入 int 以用作向量C++的索引
- 在对向量中查找元素的索引
- 如何检查类实例向量的索引是否为空
- 如何根据排序索引的向量对 std::index 集进行排序?
- C++ 中字符串向量的索引
- 如何在C++中返回向量的从零开始的索引
- 向量索引变量声明(size_t 或 std::vector<DATATYPE>::size_type)
- 特征获取索引数组,其中向量中的值为真(不需要循环)
- 引用向量中的特定索引
- 在C++中从距离矩阵创建索引向量的最快方法
- 在python gdb脚本中索引c ++向量
- 使用索引向量擦除另一个向量的索引
- 根据索引向量对向量重新排序 - 更新
- C++11将智能指针的索引向量作为类的成员
- 使用auto关键字填充双索引向量
- C++对不带lambda的索引向量进行排序
- 如何从Eigen中的索引向量中提取子向量(Eigen::Vector)
- 通过索引向量对犰狳矩阵的所有列进行排序的最佳方法