If I have a std::vector
or std::map
variable, and I want to see the contents, it\'s a big pain to see the nth element while debugging. Is there a p
You could create a custom visualiser Check this out: http://www.virtualdub.org/blog/pivot/entry.php?id=120
Above discussed method [((v)._Myfirst)[index]] will work only for specific container(std::vector) not for all possible STL containers. For example if you want to see the content of std::deque then you have to look for some other method to browse through the content in std::deque.
Maybe you can try the following similar setting to solve your issue
[I tested this setting only for Visual Studio 2010 Professional version installed with Microsoft Visual studio 2010 Service pack 1]
Step 1: Uninstall the Microsoft Visual studio 2010 Service pack 1 - for my project work I don't really need the Service pack 1 so uninstalling service pack 1 will not cause any issue for my case.
Step 2: Restart your system.
Step 3: This step is not necessary if you are not getting Error 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt'. Otherwise browse through
Project Property -> Linker (General) -> Change Enable Incremental Linking to No (/INCREMENTAL:NO)
Visual Studio 2008, at least for me, displays the contents of STL containers in the standard mouseover contents box.
In VS2005 and VS 2008 you can see the contents of STL containers. The rules for getting at the data are in autoexp.dat "c:\Program Files\Microsoft Visual Studio 9\Common7\Packages\Debugger\autoexp.dat".
AutoExp.dat is meant to be customized. However, the STL defs are under a section called [Visualizer]. If you can figure out the language used in that section, more power to you, however I'd recommend just leaving that part alone.
Autoexp.dat existed in VS2003, but there was no support for STL containers ([Visualizer] didn't exist). In VS2003 you have to manually navigate the underlying data representation.
By modifying autoexp.dat it is possible to add rules for navigating the data representation of your own types so they are easier to debug. If you do this, you should only add to the stuff under [AutoExp]. Be careful and keep a back up of this file before you modify it.
In vs 2015, I could not get any of these working
so, i wrote a bit of code
std::vector<std::string> vs(M_coins + 1);
for (unsigned long long i = 0; i <= M_coins; i++) {
std::for_each(memo[i].begin(), memo[i].end(), [i, &vs](long long &n) {
vs[i].append(std::to_string(n));
});
}
// now vs is ready for use as vs[0], vs[1].. so on, for your debugger
basically what i did was converted vector into string. i had vector of vector so i had string vector to fill.
std::vector<std::string> s;
std::for_each(v1.begin(), v1.end(), [&s](long long &n) {
s.append(std::to_string(n));
});
// now s is ready for use, for your debugger
hope it helped.
You can also right-click any value in your watch, and choose 'add watch'. This can be useful if you only need to look at one element of a map or set.
It also leads to the solution that christopher_f posted for vectors - ((v)._Myfirst)[index]