- 1
- 2
- 3
- 4
- 5
- 6
UINT aScrollMode = 0;
m_pScrollH->GetInfo(&aScrollMode, 0, 0);
if (!(aScrollMode & M_INVISIBLE))
{
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+56.1
UINT aScrollMode = 0;
m_pScrollH->GetInfo(&aScrollMode, 0, 0);
if (!(aScrollMode & M_INVISIBLE))
{
...
}
Рефакторю довольно большой проект (5 Мб исходников). Единственный способ спросить у контрола (любого из имеющихся) привожу выше.
+56
std::map<int, int> aSummator; //Массив частичных сумм
std::vector<int> v; //Исходный массив
void InitSummator()
{
aSummator[0] = v[0];
aSummator[-1] = 0;
for(int i = 1; i < int(v.size()); i++)
{
aSummator[i] = aSummator[i - 1] + v[i];
}
}
int GetSum(int l, int r)
{
return aSummator[r] - aSummator[l - 1];
}
Как я писал сумматор 0.1 года назад. Вместо того, чтобы написать один if, я использовал std::map, что увеличило ассимптотику алгоритма на запрос с O(1) до O(log(n)). Но задачу при тех ограничениях (в массиве до 100000 элементов, запросов не более 100000) алгоритм решил. Преподу, естественно, показывать забоялся.
+56
int count = 0;
while (condition) {
if (count == 5) { // Kind of like sleeping for 0.2 milliseconds
Sleep(1);
count = 0;
}
// Do whatever.
count++;
}
Последний ответ, показывает способ усыпить комп на 0.2 ms. И это после ответов со всякими сокетами, boost-таймерами и прочей мутью. Ответ такой типа, эй, чуваки вы ничо не понимаете, вот как надо, удобно же че бы нет))
http://stackoverflow.com/questions/85122/how-to-make-thread-sleep-less-than-a-millisecond-on-windows/11456112#11456112
+56
template<typename T, typename E=emp> class _interlock;
template<typename T> class _interlock
<T,
typename std::enable_if<
std::is_same<
typename std::conditional<
std::is_same<udi,typename std::make_unsigned<T>::type>::value,
udi,
uqi
>::type,
typename std::make_unsigned<T>::type
>::value
>::type
>
{
public:
_interlock
<T,
typename std::enable_if<
std::is_same<
typename std::conditional<
std::is_same<udi,typename std::make_unsigned<T>::type>::value,
udi,
uqi
>::type,
typename std::make_unsigned<T>::type
>::value
>::type
>
(T x=0)
{
number=x;
}
//Возвращается прежнее значение
T operator + (T x)
{
return (T)InterlockedExchangeAdd((_unsign_t*)&number,(_sign_t)x);
}
//Возвращается прежнее значение
T operator - (T x)
{
return (T)InterlockedExchangeAdd((_unsign_t*)&number,-(_sign_t)x);
}
//Чтение
T operator () ()
{
return number;
}
//Замена на x
T operator () (T x)
{
return (T)InterlockedExchange((_unsign_t*)&number,(_unsign_t)x);
}
//Сравнение с y, замена на x, если равны
T operator () (T x, T y)
{
return (T)InterlockedCompareExchange((_unsign_t*)&number,(_unsign_t)x,(_unsign_t)y);
}
T operator ++ ()
{
return (T)InterlockedExchangeAdd((_unsign_t*)&number,1)+1;
}
T operator -- ()
{
return (T)InterlockedExchangeAdd((_unsign_t*)&number,-1)-1;
}
T operator ++ (int)
{
return (T)InterlockedExchangeAdd((_unsign_t*)&number,1);
}
T operator -- (int)
{
return (T)InterlockedExchangeAdd((_unsign_t*)&number,-1);
}
private:
typedef typename std::make_unsigned<T>::type _unsign_t;
typedef typename std::make_signed<T>::type _sign_t;
volatile T number;
};
Функция "ИЛИ" для типов через type_traits для шаблона. А также атомарный: сумматор, счётчик, компаратор с возможностью условной и безусловной замены значения в одном лице. Для типов: udi (unsigned int), sdi (signed int), uqi (unsigned long long), sqi (signed long long). Тип emp = void (от слова empty).
+56
void split_int(int num)
{
int i1,i2,i3,i4,i5,i6,i7,i8,i9,MAX = 10;
for(i1 = 1; i1 < MAX; i1++)
{
if(i1 == num)
printf("%d = %d\r\n",i1,num);
for(i2 = 1; i2 < MAX; i2++)
{
if(i1 + i2 == num)
printf
(
"%d + %d = %d\r\n",
i1,i2,num
);
for(i3 = 1; i3 < MAX; i3++)
{
if(i1 + i2 + i3 == num)
printf
(
"%d + %d + %d = %d\r\n",
i1,i2,i3,num
);
for(i4 = 1; i4 < MAX; i4++)
{
if(i1 + i2 + i3 + i4 == num)
printf
(
"%d + %d + %d + %d = %d\r\n",
i1,i2,i3,i4,num
);
for(i5 = 1; i5 < MAX; i5++)
{
if(i1 + i2 + i3 + i4 + i5 == num)
printf
(
"%d + %d + %d + %d + %d= %d\r\n",
i1,i2,i3,i4,i5,num
);
for(i6 = 1; i6 < MAX; i6++)
{
if(i1 + i2 + i3 + i4 + i5 + i6 == num)
printf
(
"%d + %d + %d + %d + %d + %d = %d\r\n",
i1,i2,i3,i4,i5,i6,num
);
for(i7 = 1; i7 < MAX; i7++)
{
if(i1 + i2 + i3 + i4 + i5 + i6 + i7 == num)
printf
(
"%d + %d + %d +%d + %d + %d + %d = %d\r\n",
i1,i2,i3,i4,i5,i6,i7,num
);
for(i8 = 1; i8 < MAX; i8++)
{
if(i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 == num)
printf
(
"%d + %d + %d + %d + %d + %d + %d + %d = %d\r\n",
i1,i2,i3,i4,i5,i6,i7,i8,num
);
for(i9 = 1; i9 < MAX; i9++)
if(i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 == num)
printf
(
"%d + %d + %d + %d + %d + %d + %d + %d + %d = %d\r\n",
i1,i2,i3,i4,i5,i6,i7,i8,i9,num
);
}
}
}
}
}
}
}
}
printf("\r\n");
}
С одного известного форума.
+56
bool XIsEmptyString( LPCTSTR str )
{
CString s(str);
s.TrimLeft();
s.TrimRight();
return ( s.IsEmpty() || s == _T("") );
}
Кажется разработчика настиг приступ паранойи.
Взято из библиотека XMLite
+56
` enum SearchFlag
{
IgnoreCase = 0x00000001, ///< Case differences are ignored
- WholeWorlds = 0x00000002 ///< Only whole words are matched
+ WholeWords = 0x00000002 ///< Only whole words are matched
};
очепятка + копи-паста = world domination.
http://lists.freedesktop.org/archives/poppler/2015-January/011251.html
http://cgit.freedesktop.org/poppler/poppler/commit/?id=78abf540057181b708c546aee421f81a1dd5 8331
+56
#include <iostream>
#include <thread>
#include <list>
#include <functional>
#include <chrono>
using namespace std;
void outputToSomeContainer(int val, list<int>& result){
result.push_back(val);
}
class async{
list<thread> a;
public:
async(){}
async(async&& a): a(move(a.a))
{}
void addTask(function<void()>&&f){
a.emplace_back(move(f));
}
void wait(){
for(auto&& i: a)
i.join();
}
};
async async_O_n_Sort(const list<char>& unsorted, function<void(int)> outputToContainer){
async a;
for(int i: unsorted)//O(n)
a.addTask([i, outputToContainer](){this_thread::sleep_for(chrono::milliseconds(5+i*10));outputToContainer(i);});
return a;
}
int main() {
list<char> unsorted {1, 0, 6, 3, 4};
list<int> sorted;
auto a = async_O_n_Sort(unsorted, bind(outputToSomeContainer, placeholders::_1, ref(sorted)));
cout<<"А мы веселые пельменья, мы похоже на варенья"<<endl;
a.wait();
for(int i: sorted)
cout<<i<<endl;
return 0;
}
Тред:
http://www.gamedev.ru/flame/forum/?id=196521
http://coliru.stacked-crooked.com/a/c317bee4dbe183ab
+56
int GUIFont::getTextSize (std::string::iterator &begin, std::string::iterator &end ) {
int size = 0;
while(begin != end ) {
uint32_t id = utf8::unchecked::next (begin );
CharDescriptor *cd = chars- >getChar(id);
size += cd- >xadvance;
}
return size;
}
int GUIFont::getTextSize (std::string &text ) {
return getTextSize (text.begin (), text.end ());
}
int GUIFont::getTextSize (std::wstring &text ) {
std::string utf8text;
utf8::utf16to8 (text.begin (), text.end (), back_inserter (utf8text ));
return getTextSize (utf8text.begin (), utf8text.end ());
}
Вот так я зафейлил...
И что самое главное - студия сожрала и даже ворнинга не кинула, а эклипс ни в какую.
Без добрых людей на гейдеве не допер бы что к чему.
+56
if(i%2==0)
{
for(j=int (l);j<n+int (l);j++)
{
A[i][j]=B1[k];
k++;
}
}
else if(i%2!=0)
{
for(j=int (l);j<n+int (l);j++)
{
A[i][j]=B2[k];
k++;
}
}
Когда-то один однокурсник спросил у препода:
- А как добавить код в ИНАЧЕ от ИНАЧЕ.
Что-то подобное увидел и в этом коде.