相关疑难解决方法(0)

返回std :: list代价高昂?

我想知道如果返回一个列表,而不是返回指向一个列表的指针,在性能方面是昂贵的,因为如果我记得,列表没有很多属性(是不是像3个指针一样?一个用于当前位置,一个用于开头,一个用于结束?).

c++ performance stl list return-value

19
推荐指数
2
解决办法
1万
查看次数

C++函数,它接受一个OutputIterator并写入它

我正在尝试编写一个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)

c++ iterator

2
推荐指数
1
解决办法
1859
查看次数

标签 统计

c++ ×2

iterator ×1

list ×1

performance ×1

return-value ×1

stl ×1