#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; }
时间: 2024-01-28 13:03:31 浏览: 34
这段代码存在问题,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;
}
#include <iostream> #include <string> #include <vector> #include <algorithm> #include<list> #include<queue> using namespace std; int main() { int n,m; int a[1000]; int i; while(cin>>n>>m) { for(i=0;i<n;i++) { cin>>a[i]; } std::sort(a,a+n); for(int j=0;j<m;j++) { int b; cin>>b; int*it=std::lower_bound(a,a+n,b); if (it != a + n && *it == b) { std::cout<<b<<" found at "<<it-a+1<<endl; } else { std::cout<<b<<" not found"<<endl; } }} return 0; }怎么修改可以让运行时不需要另外输回车键继续
你可以在输入完 `n` 和 `m` 后,使用 `cin.ignore()` 来清除输入缓冲区中的换行符,使程序可以直接继续读取下一个输入。修改后的代码如下所示:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <list>
#include <queue>
using namespace std;
int main() {
int n, m;
int a[1000];
int i;
while (cin >> n >> m) {
for (i = 0; i < n; i++) {
cin >> a[i];
}
std::sort(a, a + n);
for (int j = 0; j < m; j++) {
int b;
cin >> b;
int* it = std::lower_bound(a, a + n, b);
if (it != a + n && *it == b) {
std::cout << b << " found at " << it - a + 1 << endl;
} else {
std::cout << b << " not found" << endl;
}
}
cin.ignore(); // 清除输入缓冲区中的换行符
}
return 0;
}
```
这样,程序就可以连续读取多组输入了,而不需要再输入回车键继续。