- 1
- 2
while (st.indexOf(" ") != -1)
st = st.replace(" ", " ");
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+4
while (st.indexOf(" ") != -1)
st = st.replace(" ", " ");
−2
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <string>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout << "Привет, я твой личный собеседник на ближайшие 40 секунд. Мое имя Компьютер" << endl;
string *greeting = new string;
cin >> greeting;
if (greeting == "Привет" || greeting == "Здравствуйте" || greeting == "Приветствую" || greeting == "привет" || greeting == "да" || greeting == "Да" || greeting == "здравствуйте" || greeting == "приветствую")
cout << "Как Вас зовут?" << endl;
else
while (greeting == "Привет" || greeting == "Здравствуйте" || greeting == "Приветствую" || greeting == "привет" || greeting == "да" || greeting == "Да" || greeting == "здравствуйте" || greeting == "приветствую");
{
cout << "Давайте начнем с приветствия" << endl;
cin >> greeting;
}
}
Nobody can help me now
−97
ВыборкаИсточник = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаИсточник.Следующий() Цикл
ВыборкаВнутреннийЗаказ = ВыборкаИсточник.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаВнутреннийЗаказ.Следующий() Цикл
ВыборкаВнешнийЗаказ = ВыборкаВнутреннийЗаказ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаВнешнийЗаказ.Следующий() Цикл
ВыборкаПоступление = ВыборкаВнешнийЗаказ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоступление.Следующий() Цикл
ВыборкаКЕ = ВыборкаПоступление.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКЕ.Следующий() Цикл
ВыборкаНоменклатура = ВыборкаКЕ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
ВыборкаХарактеристика = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаХарактеристика.Следующий() Цикл
ВыборкаСерийныйНомер = ВыборкаХарактеристика.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСерийныйНомер.Следующий() Цикл
ПроверитьНехватку(ВыборкаСерийныйНомер, Отказ, "складе числится");
Конфа Итилиум, редакция 4.4 (4.4.2.3). Проведение документа.... таких циклов два.....
−3
template<unsigned int I, unsigned int F>
struct Lua_dispatch_ {
template<typename R, typename... Args>
inline static R Lua_dispatch(lua_State*&& lua, Args&&... args) noexcept {
constexpr ScriptFunctionData const& F_ = ScriptFunctions::functions[F];
auto arg = luabridge::Stack<typename CharType<F_.func.types[I - 1]>::type>::get(lua, -1);
return Lua_dispatch_<I - 1, F>::template Lua_dispatch<R>(
forward<lua_State*>(lua),
arg,
forward<Args>(args)...);
}
};
template<unsigned int F>
struct Lua_dispatch_<0, F> {
template<typename R, typename... Args>
inline static R Lua_dispatch(lua_State*&&, Args&&... args) noexcept {
constexpr ScriptFunctionData const& F_ = ScriptFunctions::functions[F];
return reinterpret_cast<FunctionEllipsis<R>>(F_.func.addr)(forward<Args>(args)...);
}
};
template<unsigned int I>
static typename enable_if<ScriptFunctions::functions[I].func.ret == 'v', int>::type wrapper(lua_State* lua) noexcept {
Lua_dispatch_<ScriptFunctions::functions[I].func.numargs, I>::template Lua_dispatch<void>(forward<lua_State*>(lua));
return 0;
}
template<unsigned int I>
static typename enable_if<ScriptFunctions::functions[I].func.ret != 'v', int>::type wrapper(lua_State* lua) noexcept {
auto ret = Lua_dispatch_<ScriptFunctions::functions[I].func.numargs, I>::template Lua_dispatch<typename CharType<ScriptFunctions::functions[I].func.ret>::type>(forward<lua_State*>(lua));
luabridge::Stack <typename CharType<ScriptFunctions::functions[I].func.ret>::type>::push (lua, ret);
return 1;
}
template<unsigned int I>
struct F_
{
static constexpr LuaFuctionData F{ScriptFunctions::functions[I].name, wrapper<I>};
};
template<> struct F_<0> { static constexpr LuaFuctionData F{"CreateTimer", LangLua::CreateTimer}; };
template<> struct F_<1> { static constexpr LuaFuctionData F{"CreateTimerEx", LangLua::CreateTimerEx}; };
template<size_t... Indices>
inline LuaFuctionData *LangLua::functions(indices<Indices...>)
{
static LuaFuctionData functions_[sizeof...(Indices)]{
F_<Indices>::F...
};
static_assert(
sizeof(functions_) / sizeof(functions_[0]) ==
sizeof(ScriptFunctions::functions) / sizeof(ScriptFunctions::functions[0]),
"Not all functions have been mapped to Lua");
return functions_;
}
void LangLua::LoadProgram(const char *filename)
{
int err = 0;
if ((err = terra_loadfile(lua, filename)) != 0)
throw runtime_error("Lua script " + string(filename) + " error (" + to_string(err) + "): \"" +
string(lua_tostring(lua, -1)) + "\"");
constexpr auto functions_n = sizeof(ScriptFunctions::functions) / sizeof(ScriptFunctions::functions[0]);
LuaFuctionData *functions_ = functions(IndicesFor<functions_n>{});
luabridge::Namespace tes3mp = luabridge::getGlobalNamespace(lua).beginNamespace("tes3mp");
for(int i = 0; i < functions_n; i++)
tes3mp.addCFunction(functions_[i].name, functions_[i].func);
tes3mp.endNamespace();
if ((err = lua_pcall(lua, 0, 0, 0)) != 0) // Run once script for load in memory.
throw runtime_error("Lua script " + string(filename) + " error (" + to_string(err) + "): \"" +
string(lua_tostring(lua, -1)) + "\"");
}
Это часть модуля скриптинга на Lua для моего проекта. Так же поддерживаются нативные языки и Pawn.
+5
#include <iostream>
namespace __hidden__ {
struct print {
bool space;
print() : space(false) {}
~print() { std::cout << std::endl; }
template <typename T>
print &operator , (const T &t) {
if (space) std::cout << ' ';
else space = true;
std::cout << t;
return *this;
}
};
}
#define print __hidden__::print(),
int main() {
int a = 1, b = 2;
print "this is a test";
print "the sum of", a, "and", b, "is", a + b;
return 0;
}
Отсюда: [color=violet]http://madebyevan.com/obscure-cpp-features/[/color]
0
/**
* Static Content Helpers
*/
(function (window, ng, app) {
app.service('$StaticContentHelpers', function () {
var instance = null;
/**
* Конструктор хелперов
*
* @returns {Object} Функции-хелперы
* @constructor
*/
function Init () {
/**
* Обертка для статического контента,
* добавляет static домен, который пришел с бэкенда
*
* @param {String} url Урл, к которому необходимо добавить домен для статики
*
* @return {String} Готовый абсолютный url для статического контента
*/
function wrapStaticContent (url) {
// Проверим, от корня ли путь
return window.currentStaticDomain + ((/(^\/)/.test(url)) ? '' : '/') + url;
}
return {
wrapStaticContent: wrapStaticContent
}
}
function getInstance () {
if (!instance) {
instance = new Init();
}
return instance;
}
return {
getInstance: getInstance
};
});
}(window, angular, mainModule));
гуру паттернов..
−1
_colorFlashlightAnimation = compositor.CreateExpressionAnimation(
"1.0 - min("
+ " 1.0,"
+ " ("
+ " ("
+ " ( frame.Offset.x + (frame.Size.x * 0.5) + grid.Offset.x - (windowWidth * 0.5) )"
+ " * ( frame.Offset.x + (frame.Size.x * 0.5) + grid.Offset.x - (windowWidth * 0.5) )"
+ " ) + ("
+ " ( frame.Offset.y + (frame.Size.y * 0.5) + grid.Offset.y - (windowHeight * 0.5) )"
+ " * ( frame.Offset.y + (frame.Size.y * 0.5) + grid.Offset.y - (windowHeight * 0.5) )"
+ " )"
+ " ) / ( radius * radius )"
+ ")");
Удивитесь, но это Microsoft
https://github.com/Microsoft/WindowsUIDevLabs/blob/master/Demos/SlideShow/SlideShow/TransitionLibrary.cs
−1
typedef std::vector<LogicalTypeNamedItem_t> LogicalTypeNamedItems_t;
class LogicalTypesContainer
{
...
...
...
public:
bool Find(QString Name, QString Type);
LogicalTypeItems_t m_Result;
};
bool LogicalTypesContainer::Find(QString Name, QString Type)
{
for(LogicalTypeNamedItems_t::iterator it = m_LogicalTypeNamedItems.begin();
it < m_LogicalTypeNamedItems.end(); ++it)
{
LogicalTypeNamedItem_t LogicalTypeNamedItem = *it;
if(QString::compare(LogicalTypeNamedItem.GetName(), Name, Qt::CaseInsensitive) == 0)
{
LogicalTypeTypedItems_t LogicalTypeTypedItems = LogicalTypeNamedItem.GetLogicalTypeTypedItems();
for(LogicalTypeTypedItems_t::iterator devIt = LogicalTypeTypedItems.begin();
devIt < LogicalTypeTypedItems.end(); ++devIt)
{
LogicalTypeTypedItem_t LogicalTypeTypedItem = *devIt;
if(QString::compare(LogicalTypeTypedItem.GetType(), Type, Qt::CaseInsensitive) == 0)
{
m_Result = LogicalTypeTypedItem.GetLogicalTypes();
return true;
}
}
}
}
return false;
}
Есть некий контейнер LogicalTypesContainer, хранящий данные, необходимые во множестве мест. В главном окне приложения создается экземпляр LogicalTypesContainer. У главного окна реализуется интерфейс, возвращающий указатель на данный объект. Далее во все мыслимые и немыслимые места передается указатель на форму главного окна. Суть приведенного фрагмента кода в том, что требуется по некоторому ключу найти в map'е вектор и далее в этом векторе найти некий объект. Делается это во множестве мест. Идиотизм в том, что метод find не просто ищет по ключу, а создает копию вектора, в котором потом самостоятельно надо искать требуемый элемент.
+3
https://github.com/3dfxdev/hyper3DGE/commit/bdc2d2309a24f5f729c07cdf386ecaa75403c980
Куча километров кода сокращена в пару строчек. Нафиг тогда было писать ту кучу километров?
+2
template <typename T, typename ...Args>
std::future<T> looped_thread::add_task(std::function<T(Args...)> func, Args ...args) {
std::packaged_task<T()> task(std::bind(func,args...));
std::future<T> fut = task.get_future();
std::lock_guard<std::mutex> lock(_mutex);
/*std::queue<std::function<void()>>*/ _tasks.push(/*std::packaged_task<T()> -> std::function<void()> ??*/);
/*std::condition_variable*/ _cv.notify_one();
return std::move(fut);
}
Задача: написать собственный пул потоков с блекджеком и шлюхами
Подзадача: реализовать метод, добавляющий функтор в очередь команд и возвращающий std::future
Что не так: std::packaged_task не конвертируется в std::future. Он не копируется, а поэтому:
а. его нельзя передать через std::bind;
б. при захвате через с++14 lambda capture expressions (аля
auto f = [t = std::move(task)](){/**/};
) мы получаем t типа const std::packaged_task (мб это особенность mingw, конечно, но один фиг работать должно везде). Ни выполнить, ни мувнуть, ни скопировать. mutable в спецификации лямбды не помогает