我想知道如果返回一个列表,而不是返回指向一个列表的指针,在性能方面是昂贵的,因为如果我记得,列表没有很多属性(是不是像3个指针一样?一个用于当前位置,一个用于开头,一个用于结束?).
我正在尝试编写一个C++函数,它接受一个OutputIterator并将值写入它,但是我遇到了各种各样的问题.当我传入一个列表<>迭代器时,列表没有被填充,当我传入一个向量<>迭代器时,我得到一个分段错误(在Linux上).
我按照"通过传递输出迭代器从函数填充std :: [容器]"和"如何编写以通用方式获取迭代器或集合的函数?"的讨论..
有任何想法吗?我想用输出容器的begin()调用insertValues()代码,就像我对其他STL函数如std:copy()一样.
#include <cstdio>
#include <list>
#include <vector>
using namespace std;
template<typename OutputIterator>
void insertValues(OutputIterator result)
{
for (int i = 0; i < 10; i++)
{
*(result++) = i;
}
}
int main(int argc, char **argv)
{
// This code produces 0 items in the list.
list<int> values_list;
insertValues(values_list.begin());
printf("values has %d items\n", (int) values_list.size());
// This code produces a seg fault.
vector<int> values_vector;
insertValues(values_vector.begin());
printf("values has %d items\n", (int) values_vector.size());
}
Run Code Online (Sandbox Code Playgroud)