Hi all Tôi có sau đây trong một hàm thành viênđồ operator [] toán hạng
int tt = 6;
vector<set<int>>& temp = m_egressCandidatesByDestAndOtMode[tt];
set<int>& egressCandidateStops = temp.at(dest);
và tuyên bố sau đây của một biến thành viên
map<int, vector<set<int>>> m_egressCandidatesByDestAndOtMode;
Tuy nhiên tôi nhận được một lỗi khi biên dịch (Intel Compiler 11.0)
1>C:\projects\svn\bdk\Source\ZenithAssignment\src\Iteration\PtBranchAndBoundIterationOriginRunner.cpp(85): error: no operator "[]" matches these operands
1> operand types are: const std::map<int, std::vector<std::set<int, std::less<int>, std::allocator<int>>, std::allocator<std::set<int, std::less<int>, std::allocator<int>>>>, std::less<int>, std::allocator<std::pair<const int, std::vector<std::set<int, std::less<int>, std::allocator<int>>, std::allocator<std::set<int, std::less<int>, std::allocator<int>>>>>>> [ const int ]
1> vector<set<int>>& temp = m_egressCandidatesByDestAndOtMode[tt];
1> ^
Tôi biết đó là điều gì đó ngớ ngẩn nhưng tôi không thể nhìn thấy những gì tôi đã làm sai.
CẬP NHẬT Tôi gọi này từ một hàm thành viên const đó là lý do loại các biến thành viên là const vì vậy tôi nghĩ rằng một cái gì đó như sau nên sửa chữa nó:
int dest = 0, tt = 6;
const set<int>& egressCandidateStops = m_egressCandidatesByDestAndOtMode[tt].at(dest);
Nhưng không có con xúc xắc .. vẫn là lỗi tương tự.
Câu trả lời từ Potatoswatter là đúng. Để tránh vấn đề của bạn, bạn cần phải sử dụng tìm. – fulmicoton