РЕДАКТИРОВАНИЕ: из комментариев:
bool palindrome(std::string const& s)
{
return std::equal(s.begin(), s.end(), s.rbegin());
}
<час> C++ путь.
Моя наивная реализация с помощью изящных итераторов. В действительности Вы, вероятно, проверили бы и остановились бы однажды Ваш вперед, итератор имеет мимо промежуточной метки к Вашей строке.
#include <string>
#include <iostream>
using namespace std;
bool palindrome(string foo)
{
string::iterator front;
string::reverse_iterator back;
bool is_palindrome = true;
for(front = foo.begin(), back = foo.rbegin();
is_palindrome && front!= foo.end() && back != foo.rend();
++front, ++back
)
{
if(*front != *back)
is_palindrome = false;
}
return is_palindrome;
}
int main()
{
string a = "hi there", b = "laval";
cout << "String a: \"" << a << "\" is " << ((palindrome(a))? "" : "not ") << "a palindrome." <<endl;
cout << "String b: \"" << b << "\" is " << ((palindrome(b))? "" : "not ") << "a palindrome." <<endl;
}
В vim макросы просто хранятся в регистрах
. Вы можете вызвать содержимое любого регистра и выполнить его как макрос (что и делает @
). Чтобы увидеть список того, что находится в ваших регистрах, используйте : reg
.