You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用cin正确读取自定义vec2d类型的数据?

解决方法

针对你定义的vec2d类型数组的输入问题,分三种场景给出实现方式:

1. 固定大小的数组

如果已经确定数组大小,可循环读取每个vec2d对象的两个分量,再赋值给数组元素:

#include <iostream>
// 假设你的vec类定义在此处或已包含对应头文件
typedef vec<int, 2> vec2d;

int main() {
    const int ARRAY_SIZE = 6;
    vec2d myvec2d[ARRAY_SIZE];

    std::cout << "请输入" << ARRAY_SIZE << "组整数(每组2个):" << std::endl;
    for (int i = 0; i < ARRAY_SIZE; ++i) {
        int x, y;
        std::cin >> x >> y;
        // 方式1:用初始化列表构造vec2d对象赋值
        myvec2d[i] = vec2d{x, y};
        // 方式2:如果vec支持下标访问,直接设置分量
        // myvec2d[i][0] = x;
        // myvec2d[i][1] = y;
    }
    return 0;
}

2. 动态大小的数组(推荐用vector)

如果不确定元素个数,建议用std::vector<vec2d>存储,灵活添加元素,解决你之前push_back失败的问题:

#include <iostream>
#include <vector>
typedef vec<int, 2> vec2d;

int main() {
    std::vector<vec2d> myvecs;
    int count;

    std::cout << "请输入元素个数:";
    std::cin >> count;

    std::cout << "请输入" << count << "组整数(每组2个):" << std::endl;
    for (int i = 0; i < count; ++i) {
        int x, y;
        std::cin >> x >> y;
        // 构造临时vec2d对象并添加到vector中
        myvecs.push_back(vec2d{x, y});
        // 或者先创建对象赋值再添加
        // vec2d temp;
        // temp[0] = x;
        // temp[1] = y;
        // myvecs.push_back(temp);
    }
    return 0;
}

3. 重载输入运算符(更简洁的方式)

如果想直接用std::cin >> myvec2d[i]的形式读取,可为vec<T, N>模板类重载输入运算符:

#include <iostream>
template <typename T, int N>
class vec {
    // 你的vec类实现,假设包含下标运算符[]
public:
    T& operator[](int idx) { /* 此处实现下标访问 */ }
    const T& operator[](int idx) const { /* 此处实现const下标访问 */ }
};

// 重载输入运算符
template <typename T, int N>
std::istream& operator>>(std::istream& is, vec<T, N>& v) {
    for (int i = 0; i < N; ++i) {
        is >> v[i];
    }
    return is;
}

typedef vec<int, 2> vec2d;

int main() {
    vec2d myvec2d[6];
    std::cout << "请输入6组整数(每组2个):" << std::endl;
    for (int i = 0; i < 6; ++i) {
        // 直接读取整个vec2d对象
        std::cin >> myvec2d[i];
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者babakmazdaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:08:25