- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
struct base {
template <class Foo>
base() {}
};
struct derived {
derived()
: base::base<int>() // why not?? WHHYYYY?
{}
};
base b1 = base::base<int>();
base b2<int>();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+14
struct base {
template <class Foo>
base() {}
};
struct derived {
derived()
: base::base<int>() // why not?? WHHYYYY?
{}
};
base b1 = base::base<int>();
base b2<int>();
долбанный комитет
им проще запретить, чем продумать нормальный способ вызова шаблонного конструктора
+12
http://pastebin.com/kG05YmBX
Поиск подстроки в строке, написано однокурсником
+21
BOOL Space::SetShattle(Shattle* sh)
{
if(!sh)
return 1;
if(!dynamic_cast<Shattle*>(sh) )
return 2;
if(shattle)
delete shattle;
shattle=sh;
return 0;
}
Как освоить и закрепить знания о приведении типов? Скажем, вот так...
+21
if (g_bCanAcceptUnderScore)
SetIgnoreChars("№@`$%#^&*()~[]{}:;,.!?><|\\//-=+'\" \n");
else
SetIgnoreChars("№@`$%#^&*()~[]{}:;,.!?><|\\//-=+'\" \n_");
+10
{//НАЧАЛО ВРЕМЕННОГО БЛОКА ПОЛУЧЕНИЯ КОДА
try
{
int q=quan-pos;
char* temp=new char[q+1];//Временный буфер под код.
for(int i=0;i<q;temp[i]=buf_temp[pos+(i++)]);
//В цикле копируем в этот буфер символы кода.
temp[q]=0;//Завершаем строку буфера нулём.
code=atoi(temp);
delete[]temp;
}
catch(...)
{
//Проверка на вшивость, учитывая возможный размер кода, излишня, но всё же не помешает, поскольку не тормозит систему.
code=0;
}
}//КОНЕЦ ВРЕМЕННОГО БЛОКА ПОЛУЧЕНИЯ КОДА
Когда-то давно (школопериод) выпало изучать обмен данными по сети на С++.
В задании выше - кусок функции ListenSockets(), которая принимала по сети форматированную строку и парсила.
В те годы про strtok() я еще не слыхал...
+23
class ANameCreator
{
public:
virtual void Create(const std::string& /*name*/)
{
throw std::runtime_error("<ANameCreator::Create()> : abstract method stub call");
}
};
+18
//main.cpp:
#define THREAD_COUNT 2
#include "winparallel.h"
main1()
{
lock(1);
int i=0; while(i++<10)
printf("1: %d\n", i);
unlock(1);
}
main2()
{
lock(1);
int i=0; while(i++<10)
printf("2: %d\n", i);
unlock(1);
}
main3(){};
main4(){};
main5(){};
main6(){};
main7(){};
main8(){};
//=====================================================================================
//winparallels.h:
#include <windows.h>
#define _MAX_CORES 8
LPVOID _void;
#define main1() DWORD WINAPI _main1(LPVOID lpParam)
#define main2() DWORD WINAPI _main2(LPVOID lpParam)
#define main3() DWORD WINAPI _main3(LPVOID lpParam)
#define main4() DWORD WINAPI _main4(LPVOID lpParam)
#define main5() DWORD WINAPI _main5(LPVOID lpParam)
#define main6() DWORD WINAPI _main6(LPVOID lpParam)
#define main7() DWORD WINAPI _main7(LPVOID lpParam)
#define main8() DWORD WINAPI _main8(LPVOID lpParam)
DWORD WINAPI _main1(LPVOID);
DWORD WINAPI _main2(LPVOID);
DWORD WINAPI _main3(LPVOID);
DWORD WINAPI _main4(LPVOID);
DWORD WINAPI _main5(LPVOID);
DWORD WINAPI _main6(LPVOID);
DWORD WINAPI _main7(LPVOID);
DWORD WINAPI _main8(LPVOID);
HANDLE _locks[_MAX_CORES];
int _argc; char **_argv;
void lock(int n) { DWORD res = WaitForSingleObject(_locks[n], INFINITE); }
void unlock(int n) { ReleaseMutex(_locks[n]); }
int main(int argc,char **argv) {
HANDLE threads[_MAX_CORES];
DWORD id;
int THREADS = THREAD_COUNT;
if (THREADS<=0) {
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
THREADS = sysinfo.dwNumberOfProcessors;
if (THREADS>_MAX_CORES) THREADS = _MAX_CORES;
}
_argc = argc; _argv = argv;
_locks[0] = CreateMutex(NULL,FALSE,NULL);
_locks[1] = CreateMutex(NULL,FALSE,NULL);
_locks[2] = CreateMutex(NULL,FALSE,NULL);
_locks[3] = CreateMutex(NULL,FALSE,NULL);
_locks[4] = CreateMutex(NULL,FALSE,NULL);
_locks[5] = CreateMutex(NULL,FALSE,NULL);
_locks[6] = CreateMutex(NULL,FALSE,NULL);
_locks[7] = CreateMutex(NULL,FALSE,NULL);
threads[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main1,NULL,0,&id);
if (THREADS>=2)
threads[1]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main2,NULL,0,&id);
if (THREADS>=3)
threads[2]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main3,NULL,0,&id);
if (THREADS>=4)
threads[3]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main4,NULL,0,&id);
if (THREADS>=5)
threads[4]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main5,NULL,0,&id);
if (THREADS>=6)
threads[5]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main6,NULL,0,&id);
if (THREADS>=7)
threads[6]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main7,NULL,0,&id);
if (THREADS>=8)
threads[7]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main8,NULL,0,&id);
WaitForMultipleObjects(THREADS, threads, TRUE, INFINITE);
return 0;
}
>После этого всё что нужно освоить про потоки - работу с локами. Локи - это скандинавский бог приостановки потока.
+7
class Pa || Ra || Ll || El
{
int f || o || o; // четвертое ядро простаивает - надо длиннее переменные заводить
int b || a || r;
}
int m || a || i || n(int argc, CHAR* argv[])
{
Parallel parallel = new Pa() || Ra() || Ll() || El ();
}
+18
#include <iostream>
#include <map>
struct A {
const static int i = 10;
};
using namespace std;
int main()
{
map<int, string> m;
m[0] = "zero";
m[A::i] = "A::i"; // Не везде работает
cout << A::i << endl;
return 0;
}
Недели stackoverflow на уютненьньком.
Почему-то этот код не собирается в GCC 4.7.2, но при этом работает в 4.6.3 и 4.8.0.
http://liveworkspace.org/code/2o5qOP$1
http://liveworkspace.org/code/2o5qOP$2
http://liveworkspace.org/code/2o5qOP$3
+27
//Определение рангов узлов
NL1=NL2=0; int msKl1,kl1I1;
M6: NL1=NL1+NL2; FormMS(NL1,MS); K9=NO-NL1; KSS=32767*32767*2;
for(J=2;J<=K9;J++)
{KS[J]=KU1[J]*(KU1[J]-1)/2;
if(KS[J] != 0)
{L6=KU2[J-1]+1; L8=KU2[J]; L7=L8-1;
for(I1=L6;I1<=L7;I1++)
{II2=I1+1; kl1I1=KL1[I1];
for(I2=II2;I2<=L8;I2++)
{msKl1=MS[KL1[I2]];
L61=KU2[msKl1-1]+1; L71=KU2[msKl1];
for(L=L61;L<=L71;L++)
{if(KL1[L] != kl1I1)goto M10;
else { KS[J]--; goto M9;}
M10:;}
M9:;}
}
}
if(KS[J] < KSS) KSS=KS[J];
}
//=================
куски кода какой-то очень древней расчетной программы. Радует форматирование