完成generate_n
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user