読者です 読者をやめる 読者になる 読者になる

ゆとりーなの日記

日記的な事を書いて行くと思はれる

csvファイルをコンパイル時にゴニョゴニョする

次󠄁のやうなcsvファイル、"test.csv"があつたとする。

8,4,35,23,12,6,18,24,56

これの要󠄁素の合計と昇順ソートをコンパイル時にやつてしまはうと云ふ話。

#include <iostream>
#include <boost/mpl/vector_c.hpp>
#include <boost/mpl/sort.hpp>
#include <boost/mpl/for_each.hpp>
#include <boost/mpl/fold.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/plus.hpp>

using list = boost::mpl::vector_c<int,
                                  #include "test.csv"
                                  >;

int main() {
  const int test_csv_sum = boost::mpl::fold<list, boost::mpl::int_<0>, boost::mpl::plus<>>::type::value;
  std::cout << "合計:" << test_csv_sum << std::endl;
  std::cout << "ソート結果:" << std::endl;
  boost::mpl::for_each<boost::mpl::sort<list>::type>([](auto i){std::cout << i << std::endl;});
}

以下出力。

合計:186
ソート結果:
4
6
8
12
18
23
24
35
56

#includeを使󠄁つてmplのvector_cに要󠄁素をぶち込󠄁むのがミソ。あとはmplのアルゴリズムを使󠄁つて合計とソートをやつてしまへば良い。
(元ネタ「csvファイルをコンパイル時にごにょごにょする - 名古屋313の日記」をC++14仕樣でリメイク)