- 1
- 2
#define I_HATE_MACRO2(BEGIN__, END__) BEGIN__##END__
#define CONCAT_MACRO(BEGIN__, END__) I_HATE_MACRO2(BEGIN__,END__)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+8
#define I_HATE_MACRO2(BEGIN__, END__) BEGIN__##END__
#define CONCAT_MACRO(BEGIN__, END__) I_HATE_MACRO2(BEGIN__,END__)
+19
std::vector<int> data;
std::vector<int> indexes;
// ...
for (int i = 0; i < data.size(); ++i) {
if (data[i] == to_remove) {
indexes.push_back(i);
}
}
for (int i = 0; i < indexes.size(); ++i) {
data.erase(data.begin() + i);
}
"Эффективное" удаление элементов из вектора. Об <algorithm> человек не слышал...
+33
std::vector<int> data;
// ...
for (int i = 0; i < data.size(); ++i) {
int item = data.begin()[i];
// ...
}
+8
//список строк
QStringList rows_list = text.split("\n");
uint32_t row=0;
uint32_t col=0;
for(QStringList::iterator itR=rows_list.begin(); itR!=rows_list.end(); itR++,row++)
{
QStringList columns_list=itR->split(";");
col=0;
for(QStringList::iterator itC=columns_list.begin(); itC!=columns_list.end(); itC++,col++)
{
//*itC,row,col
}
}
Человек осилил итераторы в с++...
(для тех, кто не в теме - QStringList имеет доступ по индексу за константное время)
А еще мне нравятся uint32_t вместо int или, на худой конец, quint32.
+17
class Test
{
public:
Test() : f(&Test::f0), f0(&Test::f1), f1( &Test::f2 ) {}
float ( Test::* const Test::* const Test::* const f)();
private:
float ( Test::* const Test::* const f0)();
float ( Test::* const f1)() ;
float f2() { return 0; }
};
Test t;
cout << (t.*(t.*(t.*(t.f))))();
+28
if ( _It->m_sOpenText.substr( 0, 3 ) == "<tr" ||
_It->m_sOpenText.substr( 0, 3 ) == "<th" ||
_It->m_sOpenText.substr( 0, 3 ) == "<td" ||
_It->m_sOpenText.substr( 0, 6 ) == "<thead" ||
_It->m_sOpenText.substr( 0, 6 ) == "<tbody" ||
_It->m_sOpenText.substr( 0, 6 ) == "<tfoot" ||
_It->m_sOpenText.substr( 0, 8 ) == "<caption" ||
_It->m_sOpenText.substr( 0, 4 ) == "<col" ||
_It->m_sOpenText.substr( 0, 9 ) == "<colgroup" )
return; // TODO: я пишу ТАКОЙ код, убейте меня...
Продолжаем неделю свитчей — HTML-препроцессор!
+80
/* Попытка обьединить четыре цикла в один.
Первый - Присвоение элементам массива значения.
Второй - Поиск минимального значения.
Третий - Поиск максимального значения.
Четвертый - Вывод содержимого массива.
*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int array[100];
int flag;
int min = 0;
int max = 0;
for (flag=0;flag<100;flag++){
array[flag]=rand();
if ( ! min && ! max){ //Инициализация переменных, для первой итерации.
max = array[0];
min = array[0];
}
if (array[flag] >=max) max = array[flag];
if (array[flag] <= min) min = array[flag];
cout << array[flag] << "\n";
}
cout << "\nМаксимальное значение: " << max;
cout << "\nМинимальное значение: " << min << '\n';
return 0;
}
Писал я, пытаясь переделать пример из книжки, в котором для этой же задачи использовалось 4 цикла.
Просьба обьективно обгадить сей код, дабы мне было над чем подумать.
P.S только учусь.
+36
#include <iostream>
int main()
{
system("calc");
}
Калькулятор на C++? Да пожалуйста.
+24
int MyForm::modelId(int button, bool rarefied, bool grouped)
{
if (button == 4)
return 9;
else
{
Q_ASSERT(button == 1 || button == 2 || button == 3);
if (!rarefied)
return (button - 1);
else
{
if (!grouped)
return 3 + (button - 1);
else
return 6 + (button - 1);
}
}
}
Энумы? Не, не слышал.
+16
char tab1[22][8]={"program","var","begin","end","int","float","bool","if","then","else","for","to","do","while","readln","writeln","as","||","!","&&","true","false"};
char tab2[18][3]={"==","<",">","+","-","*","/","(",")",".",",",";"," ","!=","<=",">=",10};
//Много кода
if(!strcmp("program",st.top())&&!strcmp("program",&mas[j][0]))
{
st.pop();
j++;
}
else
if(!strcmp("var",st.top())&&!strcmp("var",&mas[j][0]))
{
st.pop();
j++;
}
else
if(!strcmp("begin",st.top())&&!strcmp("begin",&mas[j][0]))
{
st.pop();
j++;
}
else
if(!strcmp("end",st.top())&&!strcmp("end",&mas[j][0]))
{
st.pop();
j++;
}
else
if(!strcmp("int",st.top())&&!strcmp("int",&mas[j][0]))
{
st.pop();
j++;
}
else
if(!strcmp("float",st.top())&&!strcmp("float",&mas[j][0]))
{
st.pop();
j++;
}
//Еще строк 200 такого