Modern C++ idoms and recipes
meshell
47.5K views
Any type
Possible solution
Note that the implementation you had to refactor does not delete the elements in the vector properly. By using any you don't have to worry no new
and delete
is needed.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <any>
#include <vector>
#include <string>
#include <iostream>
using element = std::any;
using namespace std::string_literals;
int main()
{
std::vector<element> vec_of_any;
vec_of_any.emplace_back(1);
vec_of_any.emplace_back(2.0);
vec_of_any.emplace_back(std::vector<int>(2, 5));
vec_of_any.emplace_back("Hello"s);
for (const auto& elem : vec_of_any)
{
if (elem.type() == typeid(int)) {
std::cout << std::any_cast<int>(elem) << std::endl;
}
if (elem.type() == typeid(double)) {
std::cout << std::any_cast<double>(elem) << std::endl;
}
if (elem.type() == typeid(std::vector<int>)) {
const auto& vec = std::any_cast<const std::vector<int>&>(elem);
std::cout << "[";
for(auto i = 0; i < vec.size(); ++i) {
std::cout << vec.at(i);
if (i < (vec.size()-1)) {
std:: cout << ", ";
}
}
std::cout << "]\n";
}
if (elem.type() == typeid(std::string)) {
std::cout << std::any_cast<std::string>(elem) << std::endl;
}
}
}
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD Online Participants