Блог пользователя ShardsOfNarsil

Автор ShardsOfNarsil, 16 месяцев назад, По-английски

Does having templates like this:


#define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define pb push_back #define eb emplace_back #define F first #define S second #define sz(x) int((x).size()) #define rep(i, a, b) for (int i = a; i < (b); ++i) #define per(i, a, b) for (int i = (b)-1; i >= (a); --i)

useful in anyway or is it just preference?

  • Проголосовать: нравится
  • +2
  • Проголосовать: не нравится

»
16 месяцев назад, скрыть # |
 
Проголосовать: нравится +9 Проголосовать: не нравится

It is useful because it allows you to write code faster in theory, however I doubt its effect on your performance is significant in any way.

»
16 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

These templates will help you not to write long commands

»
16 месяцев назад, скрыть # |
Rev. 3  
Проголосовать: нравится +7 Проголосовать: не нравится

Templates could save up to 20 minutes of coding time for me every contest, which doesn't give significant performance rise. So for me it provides better QoL but not rating boost.

Maybe another point is that templates make your code cleaner (e.g. modular integer classes, rep(i,x,y) macros)

»
16 месяцев назад, скрыть # |
 
Проголосовать: нравится +20 Проголосовать: не нравится

Those are mostly preference and convenience, not saving that much time at all. However, some bigger templates of things like segment tree can save lots of time rather than having to code out all the functions. These small things you listed are just preferences, with possibly a few seconds total max saved.

»
16 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

when they are useful they are very nice, its just not that often, but id rather avoid the annoying feeling of coding something complicated that i know well during contest

»
16 месяцев назад, скрыть # |
 
Проголосовать: нравится +34 Проголосовать: не нравится

I would say the main benefit of these (for me) is that it prevents me from doing the dreaded

for (int j = 0; j < n; i++) {
    // code
}
»
16 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I use defines just because it is more comfortable for me, for e.g., to write all(vec) instead of vec.begin(), vec.end(),but I do not think that I make a huge difference in time using defines)

But templates for algorithms or data structures really increase ur speed. Firstly, u can spend 1 minute to copy default seg tree instead of 5 mins to write it. Secondly, u can be sure that already written code works right and u do not need to find mistakes in it

»
16 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I think that, templates makes your code cleaner and easier to read(for you, not for others).