我有一个函数,需要接收
我只需要用这些对象来迭代并进行一些只读检查。
我曾考虑过直接传递
有没有更好的方法解决这个问题,目前我有以下解决方案(从传递的向量中创建另一个列表,这也几乎是不理想的)。
MyClass *
对象的std::list
或std::vector
,并根据里面的内容进行一系列处理。
我不想重复函数体。我只需要用这些对象来迭代并进行一些只读检查。
我曾考虑过直接传递
.begin()
和.end()
迭代器,但那看起来不太美观。有没有更好的方法解决这个问题,目前我有以下解决方案(从传递的向量中创建另一个列表,这也几乎是不理想的)。
void process(std::list<MyClass*> input)
{
//A lot of processing
BOOST_FOREACH(MyClass* itMyClass, input)
{
//some checks, creating new list based on the checks
}
//A lot of processing
}
void process(std::vector<MyClass*> input)
{
process(std::list<MyClass*>(input.begin(), input.end()));
}
编辑:
看来很多人建议最终选择使用begin()
和end()
,我已经让它以类似下面示例的方式工作。感谢您的帮助。
//This one is private
template <typename Iterator>
void process(Iterator begin, Iterator end)
{
//A lot of processing
for (; begin != end; ++begin)
{
//some checks, creating new list based on the checks
}
//A lot of processing
}
void process(std::list<MyClass*> input)
{
process(input.begin(), input.end());
}
void process(std::vector<MyClass*> input)
{
process(input.begin(), input.end());
}
STL
是一项天才的工作。 - Galik