提交 44e55538 编写于 作者: 邹晓航

完成generate_n

上级 e50d7595
......@@ -71,6 +71,7 @@ TinySTL
* advance:100%
* sort:100%
* generate:100%
* generate_n:100%
* distance:100%
* 其他组件:
* circular_buffer:100%
......
......@@ -544,6 +544,15 @@ namespace TinySTL{
*first = func();
}
}
//********** [generate_n] ******************************
//********* [Algorithm Complexity: O(N)] ****************
template <class OutputIterator, class Size, class Generator>
void generate_n(OutputIterator first, Size n, Generator gen){
while (n--){
*first = gen();
++first;
}
}
//********** [distance] ******************************
//********* [Algorithm Complexity: O(N)] ****************
template<class InputIterator>
......
......@@ -221,6 +221,14 @@ namespace TinySTL{
std::generate(std::begin(arr2), std::end(arr2), func);
}
assert(TinySTL::Test::container_equal(arr1, arr2));
int n1 = 0, n2 = 0;
auto gen1 = [&n1](){return n1++; };
auto gen2 = [&n2](){return n2++; };
int arr3[100], arr4[100];
TinySTL::generate_n(arr3, 100, gen1);
std::generate_n(arr4, 100, gen2);
assert(TinySTL::Test::container_equal(arr3, arr4));
}
void testDistance(){
TinySTL::list<int> l(10, 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册