- 1
- 2
- 3
- 4
- 5
QSqlQuery my_query;
my_query.prepare(
QString("INSERT INTO table1 (number, address, age) VALUES (%1, '%2', %3);")
.arg(fromInput1).arg(fromInput2).arg(fromInput3)
);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+64
QSqlQuery my_query;
my_query.prepare(
QString("INSERT INTO table1 (number, address, age) VALUES (%1, '%2', %3);")
.arg(fromInput1).arg(fromInput2).arg(fromInput3)
);
Жаль, но похоже автор не осилил экранирование от SQL-иньекций.
+70
qDebug() << QString("%1-%2").arg("%1").arg("foo");
+72
auto val = map_.at(std::distance(map_.begin(),
std::min_element(map_.begin(), map_.end(), [](std::vector<int> a, std::vector<int> b)
{
return b.at(std::distance(b.begin(), std::min_element(b.begin(), b.end()))) > a.at(std::distance(a.begin(), std::min_element(a.begin(), a.end())));
})));
return val.at(std::distance(val.begin(), std::min_element(val.begin(), val.end())));
Разыменование итератора для слабаков!
+61
std::cout << std::cout << "Hello, world";
С гейдевчика, странно, что здесь не было.
+77
#define SK_SIMPLE_SIZE SK_BIG : case SK_SMALL : case SK_MIDDLE
switch (some_shit)
{
case SK_TINY :
{
do_smth();
}
break;
case SK_SIMPLE_SIZE :
{
do_smth2();
}
break;
}
странно что вроде бы тут не было
+14
typedef CStatisticsCalculator* (*TCalcCreator)(string&, const TUltimateStatDataPtr&);
typedef std::map <CStatisticsCalculator::eCalcKind, boost::tuple<string, TUltimateStatDataPtr, TCalcCreator>> TCalcImplMap;
static TCalcImplMap CalcsMap;
CStatisticsCalculator* CStatisticsCalculator::MakeNewCalculator(CStatisticsCalculator::eCalcKind Kind,
const TUltimateStatDataPtr& Data )
{
if (CalcsMap.empty())
{
CalcsMap[eCalcKind::eExtremeDealPrice] =
boost::make_tuple(string("be.commons.calculators.extreme_prices"), Data,
[](string& Name, const TUltimateStatDataPtr& Data_)->CStatisticsCalculator*
{ return new CExtremePricesCalculator(Name.c_str(), Data_);});
CalcsMap[eCalcKind::eTurnOver] =
boost::make_tuple(string("be.commons.calculators.turnover"), Data,
[](string& Name, const TUltimateStatDataPtr& Data_)->CStatisticsCalculator*
{ return new CTurnOverCalculator(Name.c_str(), Data_);});
};
auto i = CalcsMap.find(Kind);
if (i == CalcsMap.end())
return 0;
auto& tpl = i->second;
return tpl.get<2>()(tpl.get<0>(), tpl.get<1>());
};
Фабричный метод теперь выглядит так
+9
template<...many params...>
class Foo
{
template <typename T>
class __Bar
{
T t;
public :
__Bar(T t) : t(t) {}
};
public :
template <typename T>
__Bar<T> Bar(T t)
{
return __Bar<T>(t); // просто __Bar(t) нельзя, вывод не сработает
}
template <typename T>
void Buzz (T t)
{
}
};
...
Foo f;
f.Buzz(Bar(5));
А как вы выкручиваетесь из неумения определять тип результата по типу параметров конструктора?
+9
BOOST_FOREACH(auto &v, pt.get_child("root"))
Код компилируется и написан таким изначально. Но судя по всему использует копипаст из примеров.
+12
int main()
{
MyList<MySubList*> *list;
...
int error=makeZeroItemsNull(list)+deleteZeroItems(list);
delete list;
return error;
}
int makeZeroItemsNull(MyList *list)
{
//Удаляем указатели в списке и обнуляем
if(list==0||error)return 1;
return deleteZeroItems(list); //На всякий случай проверяем остались ли не удаленные элементы
}
int deleteZeroItems(MyList *list)
{
//Удаляем из списка обнуленные элементы
if(list==0||error)return 2;
return makeZeroItemsNull(list); //На всякий случай проверяем остались ли не обнуленные элементы
}
Учим все функции возвращать int(0) когда нет ошибок.
+9
class t_item{
public:
#define DEF_PRO_STRUCT_INFO(NAME,PARENT,OWNER)NAME(t_item)
#define DEF_PRO_VARIABLE(ADDBEG,ADDVAR,ADDEND)\
ADDBEG()\
ADDVAR(0,string,name,DEF,$,$)\
ADDVAR(1,int,next,SET,0,$)\
ADDEND()
//=====+>>>>>t_item
#include "QapGenStruct.inl"
//<<<<<+=====t_item
public:
};