完成generate_n
This commit is contained in:
@@ -71,6 +71,7 @@ TinySTL
|
|||||||
* advance:100%
|
* advance:100%
|
||||||
* sort:100%
|
* sort:100%
|
||||||
* generate:100%
|
* generate:100%
|
||||||
|
* generate_n:100%
|
||||||
* distance:100%
|
* distance:100%
|
||||||
* 其他组件:
|
* 其他组件:
|
||||||
* circular_buffer:100%
|
* circular_buffer:100%
|
||||||
|
|||||||
@@ -544,6 +544,15 @@ namespace TinySTL{
|
|||||||
*first = func();
|
*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] ******************************
|
//********** [distance] ******************************
|
||||||
//********* [Algorithm Complexity: O(N)] ****************
|
//********* [Algorithm Complexity: O(N)] ****************
|
||||||
template<class InputIterator>
|
template<class InputIterator>
|
||||||
|
|||||||
@@ -221,6 +221,14 @@ namespace TinySTL{
|
|||||||
std::generate(std::begin(arr2), std::end(arr2), func);
|
std::generate(std::begin(arr2), std::end(arr2), func);
|
||||||
}
|
}
|
||||||
assert(TinySTL::Test::container_equal(arr1, arr2));
|
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(){
|
void testDistance(){
|
||||||
TinySTL::list<int> l(10, 0);
|
TinySTL::list<int> l(10, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user