Witam wszystkich Mam następujący w funkcji składowejmap operator [] argumenty
int tt = 6;
vector<set<int>>& temp = m_egressCandidatesByDestAndOtMode[tt];
set<int>& egressCandidateStops = temp.at(dest);
i następującą deklarację zmiennej członkiem
map<int, vector<set<int>>> m_egressCandidatesByDestAndOtMode;
jednak pojawia się błąd przy kompilacji (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> ^
Wiem, że to musi być coś głupiego, ale nie widzę, co zrobiłem źle.
UPDATE Dzwonię to z const funkcji członka, który jest dlaczego typ zmiennej użytkownika jest const więc pomyślałem, że coś takiego jak poniżej powinien to naprawić:
int dest = 0, tt = 6;
const set<int>& egressCandidateStops = m_egressCandidatesByDestAndOtMode[tt].at(dest);
ale bez kości .. nadal ten sam błąd.
Odpowiedź z Potatoswatter jest poprawna. Aby uniknąć problemu, musisz użyć find. – fulmicoton