Lỗi binary '>>': no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)

Mình mới học về vector nên còn hơi bỡ ngỡ, bạn nào tìm giúp mình được không ạ.

#include <iostream>
#include <vector>
using namespace std;
void NhapMang(vector<vector<bool>>& a)
{
    int dong;
    cout << "Nhap vao so dong: \n";
    cin >> dong;
    a.resize(dong);
    for (int i = 0; i < dong; i++)
    {
        int cot;
        cout << "\nNhap vao so cot cua dong " << i << ": ";
        cin >> cot;
        a[i].resize(cot);
        for (int j = 0; j < cot; j++)
        {
            cout << "\nNhap vao a[" << i << "][" << j << "] = ";
            cin >> a[i][j]; // lỗi ở đây.
        }
    }
}
int main() {
    vector<vector<bool> > array{};
    NhapMang(array);
return 0;
}

Sao tự dưng lại CIN viết hoa thế này :confused:

2 Likes

Bạn có thể sửa lỗi này bằng cách thêm define như sau:

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

#define CIN cin

:grin: :grin: :grin:

4 Likes

Mình không rõ bạn muốn in hoa để chỉ mọi người biết dòng lỗi hay thực tế mã của bạn viết vậy.
Dựa theo thông báo lỗi thì bạn viết cin chứ không phải CIN. Bạn nên chú ý, các ngôn ngữ lập trình phổ biến đều có phần chú thích (comment) như mình đã sửa cho bạn, không cần phải viết hoa hết để mọi người hiểu sai nội dung của bạn.

2 Likes

lỗi tên là:

error: no match for ‘operator>>’ (operand types are ‘std::istream {aka std::basic_istream<char>}’ and ‘std::vector<bool>::reference {aka std::_Bit_reference}’)

vector<bool> là 1 kiểu đặc biệt :V Do vector<bool> nó tối ưu quá :V nên phần tử của nó chỉ có kích cỡ 1 bit chứ ko phải 1 byte như bool. Phần tử a[k] của nó có kiểu là std::_Bit_reference (tạm gọi là bit&) chứ ko phải là kiểu bool& :V mà nó lại ko quá tải toán tử >> cho istream và bit& nên mới báo lỗi kia.

sửa lại là tạo 1 biến bool tạm, đọc vào biến bool này, rồi gán giá trị của bool đó cho bit& này

// cin >> a[i][j]
bool temp;
cin >> temp;
a[i][j] = temp;
5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?