mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2025-08-03 12:49:50 +00:00
algorithm, operation 全面修正
This commit is contained in:
parent
21f5d5191a
commit
5e67195030
244 changed files with 4764 additions and 831 deletions
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<typename Container>
|
||||
struct erase {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::erase<Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::erase<Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::erase(cont, pos),
|
||||
sprout::get_fixed(sprout::fixed::erase(cont, pos)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - 1
|
||||
);
|
||||
|
@ -46,7 +50,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::erase(cont, pos),
|
||||
sprout::get_fixed(sprout::fixed::erase(cont, pos)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - 1
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container>
|
||||
struct erase_n {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::erase_n<N, Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::erase_n<N, Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::erase_n<N>(cont, pos),
|
||||
sprout::get_fixed(sprout::fixed::erase_n<N>(cont, pos)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - 1
|
||||
);
|
||||
|
@ -46,7 +50,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::erase_n<N>(cont, pos),
|
||||
sprout::get_fixed(sprout::fixed::erase_n<N>(cont, pos)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - 1
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<typename Container, typename T, typename... Values>
|
||||
struct insert {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::insert<Container, T, Values...>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::insert<Container, T, Values...>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -33,7 +37,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::insert(cont, pos, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::insert(cont, pos, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
|
||||
);
|
||||
|
@ -50,7 +54,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::insert(cont, pos, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::insert(cont, pos, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container, typename T, typename... Values>
|
||||
struct insert_n {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::insert_n<N, Container, T, Values...>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::insert_n<N, Container, T, Values...>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -33,7 +37,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::insert_n<N>(cont, pos, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::insert_n<N>(cont, pos, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
|
||||
);
|
||||
|
@ -50,7 +54,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::insert_n<N>(cont, pos, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::insert_n<N>(cont, pos, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
|
||||
);
|
||||
|
|
|
@ -16,7 +16,11 @@ namespace sprout {
|
|||
template<typename Container, typename Input>
|
||||
struct join {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::join<Container, Input>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::join<Container, Input>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::join(cont, pos, input),
|
||||
sprout::get_fixed(sprout::fixed::join(cont, pos, input)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + sprout::size(input)
|
||||
);
|
||||
|
@ -47,7 +51,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::join(cont, pos, input),
|
||||
sprout::get_fixed(sprout::fixed::join(cont, pos, input)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + sprout::size(input)
|
||||
);
|
||||
|
|
|
@ -15,7 +15,11 @@ namespace sprout {
|
|||
//
|
||||
template<typename Container, typename Input>
|
||||
struct join_back {
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::join_back<Container, Input>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::join_back<Container, Input>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -29,7 +33,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::join_back(cont, input),
|
||||
sprout::get_fixed(sprout::fixed::join_back(cont, input)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + sprout::size(input)
|
||||
);
|
||||
|
|
|
@ -15,7 +15,11 @@ namespace sprout {
|
|||
//
|
||||
template<typename Container, typename Input>
|
||||
struct join_front {
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::join_front<Container, Input>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::join_front<Container, Input>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -29,7 +33,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::join_front(cont, input),
|
||||
sprout::get_fixed(sprout::fixed::join_front(cont, input)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + sprout::size(input)
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<typename Container>
|
||||
struct pop_back {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_back<Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::pop_back<Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -30,7 +34,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::pop_back(cont),
|
||||
sprout::get_fixed(sprout::fixed::pop_back(cont)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - 1
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container>
|
||||
struct pop_back_n {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_back_n<N, Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::pop_back_n<N, Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -30,7 +34,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::pop_back_n<N>(cont),
|
||||
sprout::get_fixed(sprout::fixed::pop_back_n<N>(cont)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - N
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<typename Container>
|
||||
struct pop_front {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_front<Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::pop_front<Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -30,7 +34,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::pop_front(cont),
|
||||
sprout::get_fixed(sprout::fixed::pop_front(cont)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - 1
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container>
|
||||
struct pop_front_n {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_front_n<N, Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::pop_front_n<N, Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -30,7 +34,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::pop_front_n<N>(cont),
|
||||
sprout::get_fixed(sprout::fixed::pop_front_n<N>(cont)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) - N
|
||||
);
|
||||
|
|
|
@ -16,7 +16,11 @@ namespace sprout {
|
|||
template<typename Container, typename T, typename... Values>
|
||||
struct push_back {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::push_back<Container, T, Values...>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::push_back<Container, T, Values...>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::push_back(cont, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::push_back(cont, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
|
||||
);
|
||||
|
|
|
@ -16,7 +16,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container, typename T, typename... Values>
|
||||
struct push_back_n {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::push_back_n<N, Container, T, Values...>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::push_back_n<N, Container, T, Values...>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::push_back_n<N>(cont, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::push_back_n<N>(cont, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
|
||||
);
|
||||
|
|
|
@ -16,7 +16,11 @@ namespace sprout {
|
|||
template<typename Container, typename T, typename... Values>
|
||||
struct push_front {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::push_front<Container, T, Values...>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::push_front<Container, T, Values...>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::push_front(cont, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::push_front(cont, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
|
||||
);
|
||||
|
|
|
@ -16,7 +16,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container, typename T, typename... Values>
|
||||
struct push_front_n {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::push_front_n<N, Container, T, Values...>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::push_front_n<N, Container, T, Values...>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::push_front_n<N>(cont, v, values...),
|
||||
sprout::get_fixed(sprout::fixed::push_front_n<N>(cont, v, values...)),
|
||||
sprout::fixed_begin_offset(cont),
|
||||
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
|
||||
);
|
||||
|
|
|
@ -16,7 +16,11 @@ namespace sprout {
|
|||
template<typename Container>
|
||||
struct realign {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::realign<Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::realign<Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -30,7 +34,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::realign(cont, v),
|
||||
sprout::get_fixed(sprout::fixed::realign(cont, v)),
|
||||
0,
|
||||
sprout::size(cont)
|
||||
);
|
||||
|
@ -45,7 +49,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::realign(cont),
|
||||
sprout::get_fixed(sprout::fixed::realign(cont)),
|
||||
0,
|
||||
sprout::size(cont)
|
||||
);
|
||||
|
|
|
@ -16,7 +16,11 @@ namespace sprout {
|
|||
template<typename Result, typename Container>
|
||||
struct realign_to {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::realign_to<Result, Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::realign_to<Result, Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -30,7 +34,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::realign_to<Result>(cont, v),
|
||||
sprout::get_fixed(sprout::fixed::realign_to<Result>(cont, v)),
|
||||
0,
|
||||
sprout::size(cont)
|
||||
);
|
||||
|
@ -45,7 +49,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::realign_to<Result>(cont),
|
||||
sprout::get_fixed(sprout::fixed::realign_to<Result>(cont)),
|
||||
0,
|
||||
sprout::size(cont)
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container>
|
||||
struct resize {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::resize<N, Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::resize<N, Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::resize<N>(cont, v),
|
||||
sprout::get_fixed(sprout::fixed::resize<N>(cont, v)),
|
||||
0,
|
||||
sprout::fixed_container_traits<typename sprout::fit::result_of::resize<N, Container>::type>::fixed_size
|
||||
);
|
||||
|
@ -46,7 +50,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::resize<N>(cont),
|
||||
sprout::get_fixed(sprout::fixed::resize<N>(cont)),
|
||||
0,
|
||||
sprout::fixed_container_traits<typename sprout::fit::result_of::resize<N, Container>::type>::fixed_size
|
||||
);
|
||||
|
|
|
@ -17,7 +17,11 @@ namespace sprout {
|
|||
template<std::size_t N, typename Container>
|
||||
struct resize_backward {
|
||||
public:
|
||||
typedef sprout::sub_array<typename sprout::fixed::result_of::resize_backward<N, Container>::type> type;
|
||||
typedef sprout::sub_array<
|
||||
typename sprout::fixed_container_traits<
|
||||
typename sprout::fixed::result_of::resize_backward<N, Container>::type
|
||||
>::internal_type
|
||||
> type;
|
||||
};
|
||||
} // namespace result_of
|
||||
|
||||
|
@ -31,7 +35,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::resize_backward<N>(cont, v),
|
||||
sprout::get_fixed(sprout::fixed::resize_backward<N>(cont, v)),
|
||||
0,
|
||||
sprout::fixed_container_traits<typename sprout::fit::result_of::resize_backward<N, Container>::type>::fixed_size
|
||||
);
|
||||
|
@ -46,7 +50,7 @@ namespace sprout {
|
|||
)
|
||||
{
|
||||
return sprout::sub_copy(
|
||||
sprout::fixed::resize_backward<N>(cont),
|
||||
sprout::get_fixed(sprout::fixed::resize_backward<N>(cont)),
|
||||
0,
|
||||
sprout::fixed_container_traits<typename sprout::fit::result_of::resize_backward<N, Container>::type>::fixed_size
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue