-
+9
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
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));
А как вы выкручиваетесь из неумения определять тип результата по типу параметров конструктора?
TarasB,
15 Апреля 2014
-
+133
Сосево из ширинки, ебля с порога.
KonardStuard,
14 Апреля 2014
-
+152
- 1
- 2
- 3
- 4
if (ctype_space($text[$pos] && $pos < $len)) {
while (ctype_space($text[$pos++]) && $pos < $len);
$pos--;
}
Написал я когда-то такое и подумал: а какой смысл в $pos++ в последней итерации, если потом сразу $pos--?
И тут до меня дошло, что
while (ctype_space($text[$pos++]) && $pos < $len);
это не то же самое, что
while (ctype_space($text[$pos]) && $pos < $len) $pos++;
ибо в первом случае $pos++ выполнится в последней итерации, даже если ctype_space возвратит false.
И в итоге заоптимизировал до while (ctype_space($text[$pos]) && $pos < $len) $pos++; (уже без ифа и декремента).
Мораль: нефиг выпендриваться (ставить инкременты и декременты в условия), если можно написать по-простому.
arzeth,
14 Апреля 2014
-
+75
- 1
Integer code = Integer.valueOf(service.getId().toString());
service.getId() возвращает Long
evg_ever,
14 Апреля 2014
-
+153
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
<?php if(isset($the_cat_id)): ?>
<?php
$query_args['showposts'] = $brp_count_category;
$query_args['cat'] = $the_cat_id;
?>
<?php else: ?>
<?php
$query_args['showposts'] = $brp_count_index;
?>
<?php endif; ?>
{ }? Нет, не слышали...
russling,
14 Апреля 2014
-
+9
- 1
BOOST_FOREACH(auto &v, pt.get_child("root"))
Код компилируется и написан таким изначально. Но судя по всему использует копипаст из примеров.
laMer007,
14 Апреля 2014
-
+128
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
(defun primes-under (limit &optional (filter-depth (truncate (log limit))))
(labels ((%purge (prefix table depth)
(iter
(for (key value) :in-hashtable table)
(for mul := (* key prefix))
(while (< mul limit))
(when (> depth 0) (%purge mul table (1- depth)))
(remhash mul table))))
(let ((primes (iter
(with p := (make-hash-table))
(for i :from 2 :below limit)
(setf (gethash i p) t)
(finally (return p)))))
(iter
(for (key value) :in-hashtable primes)
(%purge key primes filter-depth)
(finally
(return
(iter
(for (key value) :in-hashtable primes)
(reducing key :by #'+))))))))
Вопрос к знатокам: почему так работает? (у меня чисто случайно получилось)
Для тех, кому влом разбираться:
Задача выше - код из Прожект Ойлер. Нужно найти сумму всех простых чисел меньше 2000000 (двух миллионов).
Методом подбора было установлено, что если из всех чисел меньше N последовательно удалять их произведения N_0 * N_1 * ... * N_m, где m = floor(log(N)), то, по крайней мере на сколько меня хватило посчитать, не-простых чисел не остается.
Вопрос, как связан log(N), и можно ли вообще надеятся на то, что это правило - универсально (например, что степени двойки никогда не будут меньше N).
wvxvw,
14 Апреля 2014
-
+73
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
StartElement startElement = event.asStartElement();
if(startElement.getName().getLocalPart().equals(REPORT)){
report = new Report();
}else if (startElement.getName().getLocalPart().equals(CODE)){
event = eventReader.nextEvent();
report.setCode(event.asCharacters().getData());
continue;
}else if(startElement.getName().getLocalPart().equals(SHORT_NAME)){
event = eventReader.nextEvent();
report.setShortName(event.asCharacters().getData());
}else if(startElement.getName().getLocalPart().equals(NAME)){
event = eventReader.nextEvent();
report.setName(event.asCharacters().getData());
continue;
}else if(startElement.getName().getLocalPart().equals(TYPE)){
event = eventReader.nextEvent();
report.setType(ReportType.valueOf(event.asCharacters().getData()));
continue;
}else if(startElement.getName().getLocalPart().equals(CON_CMN_REPORT)){
event = eventReader.nextEvent();
String conRepCode = event.asCharacters().getData();
report.setConnectedCommonReport(getReportByCode(conRepCode, reports));
continue;
}else if(startElement.getName().getLocalPart().equals(BEFORE)){
event = eventReader.nextEvent();
report.setAvaliableBefore(Boolean.valueOf(event.asCharacters().getData()));
continue;
}else if(startElement.getName().getLocalPart().equals(QUANTITY)){
event = eventReader.nextEvent();
report.setQuantity(ReportQuantity.valueOf(event.asCharacters().getData()));
continue;
}else if(startElement.getName().getLocalPart().equals(CREATOR_CLASS_NAME)){
event = eventReader.nextEvent();
report.setCreatorClassName(event.asCharacters().getData());
}
и не лень же было
evg_ever,
14 Апреля 2014
-
+12
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
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) когда нет ошибок.
IGHOR,
14 Апреля 2014
-
+123
Pizda,
12 Апреля 2014