问题标题: 风味独特的c++

2
1
已解决
薛乘志
薛乘志
初级启示者
初级启示者
#include <bits/stdc++.h>
namespace cpp {
template <typename A> void __input(A &arg) {
    std::cin >> arg;
}
template <typename A, typename... B> void __input(A &arg, B &...args) {
    std::cin >> arg;
    __input(args...);
}
template <typename A> void __print(A arg) {
    std::cout << arg;
}
template <typename A, typename... B> void __print(A arg, B... args) {
    std::cout << arg;
    __print(args...);
}
template <typename T> std::vector<T> __range(T to) {
    std::vector<T> ret;
    for (T i = 0; i < to; ++i) {
        ret.push_back(i);
    }
    return ret;
}
template <typename T> std::vector<T> __range(T from, T to) {
    std::vector<T> ret;
    for (T i = from; i < to; ++i) {
        ret.push_back(i);
    }
    return ret;
}
} // namespace cpp
#define function(args...) [&](args)
#define var auto
#define input(args...) cpp::__input(args)
#define getline(str) std::getline(std::cin, str)
#define print(args...) cpp::__print(args)
#define main() int main()
#define import using namespace
#define new(args...)(args);
#define array vector
#define in :
#define range(args...) cpp::__range(args)

//以上为准备工作,以下为正经代码

import std;
main() {
    var str = string new();
    getline(str);
    struct node {
        char c;
        size_t i;
    };
    var arr = array<node> new();
    for (var i in range(str.length())) {
        arr.push_back(node{str[i], i});
    }
    sort(arr.begin(), arr.end(), function(node a, node b) {
        if (a.c == b.c) {
            return a.i < b.i;
        }
        return a.c < b.c;
    });
    for (var i in arr) {
        print(i.c, " ", i.i, "\n");
    }
}

Dev-C++5.11编译不了,但是酷町堂的在线IDE可以编译

薛乘志在2022-08-28 15:44:28追加了内容

是不是有点某脚本语言的风格了?

薛乘志在2022-08-28 15:45:51追加了内容
#include <bits/stdc++.h>
namespace cpp {
template <typename A> void __input(A &arg) {
    std::cin >> arg;
}
template <typename A, typename... B> void __input(A &arg, B &...args) {
    std::cin >> arg;
    __input(args...);
}
template <typename A> void __print(A arg) {
    std::cout << arg;
}
template <typename A, typename... B> void __print(A arg, B... args) {
    std::cout << arg;
    __print(args...);
}
template <typename T> std::vector<T> __range(T to) {
    std::vector<T> ret;
    for (T i = 0; i < to; ++i) {
        ret.push_back(i);
    }
    return ret;
}
template <typename T> std::vector<T> __range(T from, T to) {
    std::vector<T> ret;
    for (T i = from; i < to; ++i) {
        ret.push_back(i);
    }
    return ret;
}
} // namespace cpp
#define function(args...) [&](args)
#define var auto
#define input(args...) cpp::__input(args)
#define getline(str) std::getline(std::cin, str)
#define print(args...) cpp::__print(args)
#define main() int main()
#define import using namespace
#define new(args...)(args);
#define array vector
#define in :
#define range(args...) cpp::__range(args)
 
//以上为准备工作,以下为正经代码
 
import std;
main() {
    var str = string new();
    getline(str);
    struct node {
        char c;
        size_t i;
    };
    var arr = array<node> new();
    for (var i in range(str.length())) {
        arr.push_back(node{str[i], i});
    }
    sort(arr.begin(), arr.end(), function(node a, node b) {
        if (a.c == b.c) {
            return a.i < b.i;
        }
        return a.c < b.c;
    });
    for (var i in arr) {
        print(i.c, " ", i.i, "\n");
    }
}

用某脚本语言的代码框再发一遍看看效果


0
0
0
我要回答