Personally, I switch the IDE of choice every now and then. For example, I've used Code::Blocks for some years, but skipped it now as for some reason the editor window has got an increased latency that let me type whole phrases into the blind; and I already disabled all time consuming stuff (I anyways don't use frequently) like code completion (that is, on my Debian GNU/Linux installation; on Windows I still love code::blocks).
So, I recently stumbled over Monodevelop, and even though I am not the biggest fan of mono/.net, that IDE is really nice and extendible. It has a class browser and a filesystem browser, and some more features I personally don't use (it's primarily an mono/.net IDE, but also supports C++ really nicely). The only thing I don't like on monodevelop is that it isn't scintilla based, or that it cannot be tweaked to be like scintilla (I am a heavy user of it's copy+paste mechanisms) (*).
I usually don't compile inside an IDE, as that is often painful when it comes to distributing your app or porting it to other operating systems (I use makefiles or CMake instead). Also, having a (fullscreen) console/terminal-window handy for compilation is really nice if your app dumps a lot of log, or when your compiler dumps epic error messages.
(*) For example, you can press CTRL+D to just duplicate the marked text right behind the current cursor position. To get a glimpse on it, look at Notepad++ (win) or Scite (Linux).