#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> a; a.reserve(n); for(int i = 0; i < n;i++) { cin >> a[i]; } return 0; }
时间: 2024-01-28 21:03:31 浏览: 99
这段代码仍然存在问题,虽然使用了 `reserve()` 函数为 vector 容器预留了空间,但是仍然没有实际分配空间,因此访问 `a[i]` 时仍然会出现越界错误。
正确的做法是使用 `resize()` 函数为 vector 容器分配空间,或者在构造函数中指定大小。可以将代码改成如下:
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a;
a.resize(n); //分配空间
for(int i = 0; i < n;i++) {
cin >> a[i];
}
return 0;
}
```
相关问题
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> a; for(int i = 0; i < n;i++) { cin >> a[i]; } return 0; }
这段代码存在问题,vector 容器在使用前需要先分配空间,可以使用 resize() 函数或者在构造函数中指定大小。否则会出现访问越界的错误。可以将代码改成如下:
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n); //分配空间
for(int i = 0; i < n;i++) {
cin >> a[i];
}
return 0;
}
```
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } sort(nums.begin(), nums.end()); // 排序
您的代码漏掉了大括号,请在sort语句后面加上大括号。另外,您需要加上输出结果的语句。完整的代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end()); // 排序
for (int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
return 0;
}
阅读全文