【发布时间】:2017-12-04 18:10:59
【问题描述】:
我正在尝试用字符填充 C++ 中的二维向量,但是当我运行此代码时,它以一行字符结尾 (*..)。
我怎样才能像这样填充二维向量:
*.*
.**
#include <iostream>
#include <vector>
int main()
{
std::vector<std::vector<char> > vec2D;
std::vector<char> rowV;
unsigned int row=2;
unsigned int col=3;
char c;
unsigned int temp=0;
while(temp!=col)
{
while(rowV.size()!=row)
{
std::cin>>c;
rowV.push_back(c);
}
vec2D.push_back(rowV);
++temp;
}
return 0;
}
【问题讨论】:
-
有趣且无关紧要的趣事:
std::vector<std::vector<char> >不会生成 2D 矢量。它产生了vectors 的vector,这带来了一些令人讨厌的性能问题(搜索词:“pointer Chasing”、“spatial locality”)。从vectors 的vector开始,因为它非常容易理解和使用,但是如果分析发现程序太慢,请记住它。