Salut à tous je suit dans une fonction membreopérateur carte [] opérandes
int tt = 6;
vector<set<int>>& temp = m_egressCandidatesByDestAndOtMode[tt];
set<int>& egressCandidateStops = temp.at(dest);
et la déclaration suivante d'une variable membre
map<int, vector<set<int>>> m_egressCandidatesByDestAndOtMode;
Cependant, je reçois une erreur lors de la compilation (compilateur Intel 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> ^
Je sais que ça doit être quelque chose d'idiot mais je ne vois pas ce que j'ai fait de mal.
MISE À JOUR J'appelle cela d'une fonction membre const qui est la raison pour laquelle le type de la variable membre est const donc je pensais que quelque chose comme ce qui suit devrait fixer:
int dest = 0, tt = 6;
const set<int>& egressCandidateStops = m_egressCandidatesByDestAndOtMode[tt].at(dest);
Mais pas de dés .. Toujours la même erreur
La réponse de Potatoswatter est correcte. Pour éviter votre problème, vous devez utiliser find. – fulmicoton