KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm currently working on a C++ project that needs to have as few external dependencies as possible, and thus I'm pretty much sticking to STL and Boost. Until now, I've been almost exclusively living in Qt-land when it comes to C++. In general I tend to use C# and Python when I can. Today I wanted to check whether a std::vector contained a certain item. With Qt, I'd do this like so: QList< int > list; list.append( 1 ); list.append( 2 ); list.append( 3 ); if ( list.contains( 2 ) ) { // do something } Nice and readable. But std::vector has no contains method, which was a surprise. Ok... what would the STL idiom for something like that be? Searching around, it seems to be this: std::vector< int > list; list.push_back( 1 ); list.push_back( 2 ); list.push_back( 3 ); std::vector< int >::const_iterator result = std::find( list.begin(), list.end(), 2 ); if ( result != list.end() ) { // do something } That (to me) is hardly readable and much too verbose. So I found myself writing a utility function that takes a vector and a value and returns bool depending on whether the value was found or not. Basically, a templated contains() method; a wrapper for the above std::find call. I can then use that in a way that is similar to the Qt example. I have several similar utility functions in mind that would wrap other STL idioms for no other reason but a (perceived) increase in readability. What I want to know is... is this a bad idea? Do other people do the same? Am I missing something crucial? The code will be OSS at one point, and I'd rather not do something idiosyncratic that other C++ devs would find strange.
Tags (comma-separated)
Save Edits
Cancel