ivan100sic's blog

By ivan100sic, history, 4 years ago, In English

I'll just leave this here:

#include <bits/stdc++.h>
using namespace std;

struct _in {
    template<class T> operator T() {
        T x;
        cin >> x;
        return x;
    }
} in;

int main() {
    vector a(in, 0.0);
    for (auto& x : a) x = in;
    string s = in;
    cout << s << ' ' << a[2] << '\n';
}

Try with input

5
0.1 0.2 0.3 0.4 0.5
hello

Have a nice day

  • Vote: I like it
  • +256
  • Vote: I do not like it

| Write comment?
»
4 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

this is like, really cool

»
4 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

struct can be anonymous which makes it even cooler.

»
4 years ago, hide # |
 
Vote: I like it +55 Vote: I do not like it

Unfortunately, this may lead to non-obvious errors like as follows:

void f(int a, int b)
{
    cout << a << ' ' << b << '\n';
}

int main()
{
    f(in, in);
    return 0;
}

Input: 1 2
Output: 2 1

»
4 years ago, hide # |
 
Vote: I like it +21 Vote: I do not like it

Thanks for sharing this! Just a small improv: you can omit typename like that:

struct {
  template <class T> operator T() {
    T x;
    cin >> x;
    return x;
  }
} in;