gpt4 book ai didi

c++ - 在2D vector 中输入值时发生核心转储错误

转载 作者:行者123 更新时间:2023-12-02 11:12:52 25 4
gpt4 key购买 nike

C++代码

#include<iostream>
#include<vector>
using namespace std;

int main()
{
int N;
vector<vector<int>> arr;
cin >> N;
for(int i = 0; i < N; i++)
{
for(int j = 0; j < 2; j++)
{
int a;
cin >> a;
arr[i].push_back(a);
}
}


return 0;
}
当我在2D vector 中输入值时,出现错误(核心已转储)。
例如)
编译器(输入)
3
1 3
segmentation error(dore dumped)
我该如何解决?

最佳答案

[推荐]只需执行以下操作:引用。 Range-based for loop

#include <iostream>
#include <vector>

int main() {
int N;
std::cin >> N;
std::vector<std::vector<int>> arr(N, std::vector<int>(2));
for (auto &&row : arr)
for (auto &&ele : row)
std::cin >> i;
}

代码的问题是,您没有告诉编译器 vector 中有多少个元素。
更正的代码:
// ...
int main() {
int N;
cin >> N;
vector<vector<int>> arr(N);
for (int i = 0; i < N; i++) {
// ...

修改代码的另一种方法:

        arr.push_back(vector<int>());
就在内部循环之前:
        for (int j = 0; j < 2; j++) {
另一种方法:

    arr.resize(N); // https://en.cppreference.com/w/cpp/container/vector/resize
在外循环之前:
    for (int i = 0; i < N; i++) {

红利提示:
如果数据仅限于两列,则可以考虑使用 std::pair代替:
#include <iostream>
#include <utility>
#include <vector>

int main() {
int N;
std::cin >> N;
std::vector<std::pair<int, int>> arr(N);
for (auto &&i : arr)
std::cin >> i.first >> i.second;
}

关于c++ - 在2D vector 中输入值时发生核心转储错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63977601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com