LINUX.ORG.RU

Сообщения linux276

 

почему компилятор не видит member type базового класса?

Форум — Development

вот этот код приводит

template<class Cont, class Iter=typename Cont::iterator>
class my_iterator: public std::iterator_traits<Iter> {
 Iter it;
 // ...
public:
 reference operator*() const {return *it;} // error
 // ...
};
приводит к ошибке
   
error: ‘reference’ does not name a type

вот так ошибка пропадает

  typename std::iterator_traits<Iter>::reference operator*() const {return *it;}
но, я наследовал свой класс от iterator_traits чтобы пользоваться его member type и не прописывать в каждом операторе такие вот выражения.

Почему возникает ошибка? и как правильно унаследоваться от iterator_traits?

 

linux276
()

Хэш-таблица с прямой адресацией

Форум — Development

Помогите разобрать теорию. При прямой адресации к хэш-таблице ключи перенумерованы целыми числами из множества. Ну и понятно, что тогда к элементу массива (хэш-таблицы) мы добираемся за время O(1).

Но, чтобы по произвольному ключу получить его индекс, требуется время O(n), если эти ключи храняться в списке или массиве, или O(log(n)), если ключи и их индексы хранит сбалансированное двоичное дерево.

Или, все-таки здесь все полагают, что всегда можно придумать hash функцию с трудоемкостью O(1)? Например, есть множество ключей: «one», «two» ..., например n штук. причем n известно. Как добиться разыменования «one»->1, «two»->2 ... за O(1), а не O(n)?

 ,

linux276
()

свой move для семантики перемещения

Форум — Development

Имеется некоторый класс A:

template <class T> class A {
     T* t;
     A(const A & a): t(0) {                    
          std::cout << "копирующий конструктор\n"; 
          // t = new .....   
     }
     A(A && a): t(0) {                    
          std::cout << "перемещающий конструктор\n";
          // t = a.t .....     
     }
};  

помогите написать MyMove аналог std::move, чтобы срабатывал перемещающий конструктор, а не копирующий:

A<int> b(25);
A<int> a(MyMove(b));

P.S. std::move устраивает, просто хочу разобраться. Мой неудачный опыт:

template <class T> 
T&& MyMove(T&& a) {    return a; }
// или
T&& Move(T&& a) { return static_cast<T&&>(a); }
с такими функциями вызывается копирующий конструктор.

 ,

linux276
()

operator++ для элементов бинарного дерева

Форум — Development

Как реализован операторы operator++ для бинарного дерева, лежащего в основе std::set, std::map ... и в других ассоциативных контейнерах STL? Интересует алгоритм, согласно которому принимается решение: по имеющемося указателю перейти к следующему указателю. (Т.е. что считать следующим указателем?).

 std::set<int> s;
 s.insert(3);
 s.insert(2);
 s.insert(5);
 std::set<int>::iterator i = s.begin();
 std::cout << *i << ' ';
 ++i;
 s.insert(1);
 std::cout << *i << ' ';

 ,

linux276
()

статическая маршрутизация с ip

Форум — Admin

Команда ifconfig, после установки ip-адреса прописывает маршрут:

# ifconfig eth0 192.168.12.3 netmask 255.255.255.0 up
# route -n
Destination     Gatwey     Genmask         ...   Iface 
192.168.12.0    0.0.0.0    255.255.255.0   ...   eth0
как добится установки этого же маршрута при использовании команды ip? по умолчанию он не появляется.

Проблема:

# ip addr add 192.168.12.3/24 brd + dev eth0
# ifconfig eth0
eth0 .......
      inet addr: 192.168.12.3 Bcast:192.168.12.255 Mask:255.255.255.0
......
# ip ro add 192.168.12.0/24 dev eth0
RTNETLINK answers: Network is down

 

linux276
()

топология звезда в MPI

Форум — Development

Помогите разобраться с топологией граф MPI. Не пониаю одного момента в учебнике.

Во здесь http://www.intuit.ru/studies/courses/4447/983/lecture/14927?page=7 приводится топология звезда.

Дана матрица «инцидентности»:

0 	1, 2, 3, 4
1 	0
2 	0
3 	0
4 	0

Кодируется она так:

nnodes=5
int index[] = { 4,1,1,1,1 };
int edges[] = { 1,2,3,4,0,0,0,0 };
где nnodes - число вершин, edges - список ребер, а вот index, в соответствии с документацией устроено так «index - общее число соседей первых i узлов графа».

http://www.open-mpi.org/doc/v1.8/man3/MPI_Graph_create.3.php

The ith entry of array index stores the total number of neighbors of the first i graph nodes.

Считаю, что вот так д.б. устроен index:

int index[] = { 4,5,6,7,8 };

Я прав или нет? Разъясните, если не прав.

 

linux276
()

RSS подписка на новые темы