Por que não posso indexar um vetor de std :: na janela imediata?
-
24-09-2019 - |
Pergunta
Então, eu tenho um vetor
std::vector<std::string> lines.
Eu preencho este vetor e posso acessá -lo como
std::string temp = lines[0];
No entanto, na janela imediata, ambos
lines[0] - error:overloaded operator not found
e
lines.at(0) - error:symbol is ambiguous
Não funcione. Existe um truque para usar a janela imediata com C ++. Estou vindo principalmente de um fundo C#, onde tudo funciona bem (e tenho o IntelliSense na janela imediata). Eu não esperava que o C ++ fosse ótimo, mas achei que funcionaria para as coisas além do INTS. Alguém pode me dizer o que estou fazendo de errado? Obrigado.
EDIT: Eu deveria estar claro, nada realmente funciona na janela imediata, este é apenas um exemplo simplificado
Editar: estou no modo de depuração
Solução
As janelas imediatas e de relógios não suportam operadores sobrecarregados. Há algum apoio lá para imprimir contêineres padrão como um todo de maneira sensata (ver, por exemplo, http://www.virtualdub.org/blog/pivot/entry.php?id=120), mas isso não se estende a poder usar operator[]
neles.
Espero que isso seja melhorado nas revisões posteriores do depurador, mas por enquanto, para olhar para o elemento de um vetor, tente lines._Myfirst[i]
.
(_Myfirst
, nas bibliotecas padrão que vêm com VC ++, é a variável de membro em um std::vector
Isso aponta para o primeiro elemento da sequência. Portanto, isso está apenas examinando um vetor como se fosse algum outro objeto. Para resolver isso, eu tive que olhar para os cabeçalhos ... não muito conveniente, mas espero que isso o ajude. Você provavelmente pode fazer algo semelhante com os outros contêineres, mas terá que procurar nos cabeçalhos para descobrir como.)
(A propósito, se você trabalha em C#, o depurador C ++ provavelmente parecerá em comparação um pouco menos escorregadio em geral, e este é apenas um exemplo disso. Fico com a impressão de que houve muito mais trabalho colocado no Lado clr.)
Outras dicas
Nas versões do Visual Studio (por exemplo, 2013/2015) do Visual Studio (por exemplo, a variável de membro não existe mais para uma variável de vetor STD ::. Use _c_begin - significa para o exemplo dado, use linhas._c_begin [i].