C++ Returning Multiple Items
Posted
by
Travis Parks
on Stack Overflow
See other posts from Stack Overflow
or by Travis Parks
Published on 2012-09-25T15:20:58Z
Indexed on
2012/09/25
15:37 UTC
Read the original article
Hit count: 322
I am designing a class in C++ that extracts URLs from an HTML page. I am using Boost's Regex library to do the heavy lifting for me. I started designing a class and realized that I didn't want to tie down how the URLs are stored. One option would be to accept a std::vector<Url>
by reference and just call push_back on it. I'd like to avoid forcing consumers of my class to use std::vector
. So, I created a member template that took a destination iterator. It looks like this:
template <typename TForwardIterator, typename TOutputIterator>
TOutputIterator UrlExtractor::get_urls(
TForwardIterator begin,
TForwardIterator end,
TOutputIterator dest);
I feel like I am overcomplicating things. I like to write fairly generic code in C++, and I struggle to lock down my interfaces. But then I get into these predicaments where I am trying to templatize everything. At this point, someone reading the code doesn't realize that TForwardIterator
is iterating over a std::string
.
In my particular situation, I am wondering if being this generic is a good thing. At what point do you start making code more explicit? Is there a standard approach to getting values out of a function generically?
© Stack Overflow or respective owner