37 lines
747 B
C++
37 lines
747 B
C++
#pragma once
|
|
|
|
#include "common/basicTypes.h"
|
|
#include <utility>
|
|
|
|
template <class Vec> inline
|
|
Vec& operator+=(Vec& lhs, Vec&& rhs) // Combine 2 vectors
|
|
{
|
|
lhs.reserve(lhs.size() + rhs.size());
|
|
|
|
for(auto& el: rhs)
|
|
lhs.push_back( std::forward<decltype(el)>(el) );
|
|
return lhs;
|
|
}
|
|
|
|
template <class Vec> inline
|
|
Vec& operator+=(Vec& lhs, const Vec& rhs) // Combine 2 vectors
|
|
{
|
|
lhs.reserve(lhs.size() + rhs.size());
|
|
|
|
for(const auto& el: rhs)
|
|
lhs.push_back( std::forward<decltype(el)>(el) );
|
|
return lhs;
|
|
}
|
|
|
|
template <class Vec> inline
|
|
void remove(Vec& vec, size_t pos) /* Remove from vector by moving the last element in its place */
|
|
{
|
|
vec[pos] = vec[vec.size() - 1];
|
|
vec.pop_back();
|
|
}
|
|
|
|
inline I32 max(I32 a, I32 b)
|
|
{
|
|
return a >= b ? a : b;
|
|
}
|