cuốn sách gpt4 ai đã làm

c++ - for_each sử dụng vector Lambda sửa đổi tại chỗ

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 10:25:08 25 4
mua khóa gpt4 Nike

Khi tôi cố gắng sử dụng for_each Khi thay đổi một vectơ tại chỗ:

vector sub_accs_ind(vec_ids_.size());
std::for_each(sub_accs_ind.begin(), sub_accs_ind.end(), [](bool& b){ b = false; });

nó dẫn đến lỗi /usr/include/c++/4.8/bits/STL_algo.h:4417:14: error: không khớp với cuộc gọi đến '(main(int, char * const*)::__lambda3) (std::_Bit_iterator::reference) '
__f(*__đầu tiên);

Bạn có thể cho tôi biết có chuyện gì ở đây không?

câu trả lời hay nhất

std::vector không phải là một thùng chứa !

trình vòng lặp của nó không trả về bool& , nhưng là một phiên bản proxy. Trong C++11, bạn phải đặt tên loại của nó một cách rõ ràng:

std::for_each(
sub_accs_ind.begin(),
sub_accs_ind.end(),
[](decltype(sub_accs_ind)::reference b){ b = false }
);

C++14 cho phép bạn khai báo các tham số dưới dạng auto&& để chứa các tài liệu tham khảo và proxy thực sự.

Về c++ - sửa đổi tại chỗ của for_each với lambda của vector, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/38585826/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress