320x100
struct stst
{
std::vector<int> vec;
};
std::vector<stst> vec;
template<typename... Args>
stst* findFunc(Args... args)
{
auto iter = std::find_if(vec.begin(), vec.end(), [args = std::initializer_list<int>{ args... }](const stst& _st) {
std::size_t argSize = args.size();
if (_st.vec.size() < argSize)
{
return false;
}
for (std::size_t i = 0; i < argSize; ++i)
{
if (_st.vec[i] != *(args.begin() + i)) {
return false;
}
}
return true;
});
if (vec.end() == iter)
{
return nullptr;
}
return &(*iter);
}
int main()
{
stst s1, s2, s3;
s1.vec = { 0, 1, 2, 3 };
s2.vec = { 4, 5, 6 };
s3.vec = { 1, 2, 3 };
vec.push_back(s1);
vec.push_back(s2);
vec.push_back(s3);
auto ptr = findFunc(0, 1, 2, 3);
if (nullptr != ptr)
{
for (auto iter : ptr->vec)
{
std::cout << iter << std::endl;
}
}
return 0;
}
320x100
'프로그래밍 > Morden C++' 카테고리의 다른 글
Module 형식으로 전환시 에러 (0) | 2023.06.07 |
---|---|
std::vector의 정렬된 상태를 유지하며 원소 삽입하기 (0) | 2022.06.20 |
정렬되지 않은 std::vector에서 요소를 O(1) Time에 삭제하기 (0) | 2022.06.20 |
std::call_once (0) | 2022.03.17 |
smart pointer 삭제자 지정 (0) | 2022.01.27 |