I've never seen anyone use this in competitive programming (or anywhere really) but it might be useful:
In C++ you can use the basic_string
class template instead of vector
for "simple" types [1]. It works just like vector
but also allows you to use a few convenient member functions and operators just like with strings, most notably operator+
and operator+=
. See the following code:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
basic_string<int> a;
cin >> n;
for (int i=0; i<n; i++) {
int x;
cin >> x;
a += x;
}
a += a;
a = a.substr(n/2, n);
cout << (a + a).find({1, 2, 1}) << '\n';
}
[1] Although I'm not 100% sure, "simple" is any primitive type, std::pair
of simple types, etc. Do not use this with vectors, strings, sets, maps and similar types. And for this reason please don't typedef vector
as basic_string
.