Last active
September 5, 2020 19:01
-
-
Save ifknot/9d1cbc0b8f1e8e069bb303f15050463a to your computer and use it in GitHub Desktop.
C++ heterogeneous container
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
#include <variant> | |
#include <string> | |
#include <vector> | |
#include <unordered_map> | |
#include <iostream> | |
#include <iomanip> | |
#include <sstream> | |
namespace R { | |
using basic_data_types = std::variant<char, double, int, std::string, std::tm>; | |
using variant_vector = std::vector<basic_data_types>; | |
/** | |
* As per R language definition the following are the characteristics of a data frame | |
* | |
* - The column names should be non-empty. | |
* - The row names should be unique. | |
* - The data stored in a data frame can be of numeric, factor or character type. | |
* - Each column should contain same number of data items. | |
*/ | |
using data_frame = std::unordered_map<std::string, variant_vector>; | |
variant_vector as_dates(std::vector<std::string> dates); | |
} | |
std::ostream& operator<<(std::ostream& os, const std::tm& tm); | |
std::ostream& operator<<(std::ostream& os, const R::variant_vector& vv); | |
std::ostream& operator<<(std::ostream& os, const R::data_frame& df); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment