c++ - 向量数组输入问题,可能是索引问题
问题描述
我无法理解为什么我的向量数组没有输入一行。...
#include<bits/stdc++.h>
using namespace std;
int main () {
int r;
cin>>r;
vector <int> v[r];
for (int i=0; i<r; i++) {
for (int j=0; j<i; j++) {
int x;
cin>>x;
v[i].push_back(x);
}
}
for (int i=0; i<r; i++) {
for (size_t j=0; j<v[i].size(); j++){
cout<<v[i][j];
}
cout<<endl;
}
}
... 有输入 ...
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
...它输出...
7
38
810
2744
...在输出的开头有一个空行。
解决方案
您在输出的开头看到空行,因为v[0]
是空的。您可以通过以下方式修复它:
#include<bits/stdc++.h>
using namespace std;
int main () {
int r;
cin>>r;
// vector <int> v[r];
// ^
// This is variable length array which is not really legal in C++. Use:
vector<vector<int>> v;
v.resize(r);
for (int i=0; i<r; i++) {
for (int j=0; j<=i; j++) {
// ^^
// This loop had 0 iterations when i == 0, 1 when i == 1, ..., 4 when i == 4.
// So you need to do one more iteration each time.
int x;
cin>>x;
v[i].push_back(x);
}
}
for (int i=0; i<r; i++) {
for (size_t j=0; j<v[i].size(); j++){
cout<<v[i][j];
}
cout<<endl;
}
}
还:
- 包含
bits/stdc++.h
不好:为什么我不应该#include <bits/stdc++.h>?,你应该只包括你需要的:
#include <iostream>
#include <vector>
- 有时
using namespace std
不好:为什么“使用命名空间标准;” 被认为是不好的做法?.
推荐阅读
- .net-core-2.1 - 有没有办法确定某个区域的 AWS SES 服务可用性?
- angularjs - ngTagsInput - 如何阻止通过“退格”删除标签
- upgrade - HashiCorp Nomad 服务器或客户端的零停机升级
- mysql - 计算日期时间戳的出现次数
- google-api - Google Directions API - 最佳路线
- azure - Azure 数据工程师助理证书 - 准备,微软学习平台
- android - 适用于 Android 的 OkHttp:不强制执行证书/公钥固定的选项
- python - 列出所有父类和子类的 Python 文档
- node.js - 在 Jenkins 构建容器上找不到模块“反应”
- machine-learning - 平衡数据集的含义