The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"std bitmap for user defined classes"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"std bitmap for user defined classes"  –1 +/
Сообщение от handler2006 email(ok) on 23-Май-12, 13:55 
Здравствуйте!
Вопрос немного философский, и, скорее всего, практического применения не имеет.
Итак.
Нашел конструкцию своппинга при помощи битовых операторов:

a^=b^=a^=b

Данная конструкция работает для встроенных типов, а вот как можно ее применить к типам данных , определяемых пользователем?
В документации описаны примеры создания битовых наборов только для числовых типов данных и стрингов, причем, последние должны содержать в себе только символы 0 и 1.


int a = 42;
double b = 3.14
std::string c = "1001";
std::string d = "123";
std::bitset<2> _a(a); // OK
std::bitset<2> _b(b); // OK
std::bitset<2> _c(c); // OK
std::bitset<2> _d(d); // Error

А вот так нельзя:


class A {...};
std::bitset<2> _a(a); // Error

Или все-таки можно?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "std bitmap for user defined classes"  +/
Сообщение от deadmustdie email on 24-Май-12, 12:19 
class A {

...

operator std::string() {
  return std::string(...);
}

};

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "std bitmap for user defined classes"  +/
Сообщение от handler2006 email(ok) on 24-Май-12, 16:10 
Простите, не совсем понял идею
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "std bitmap for user defined classes"  +/
Сообщение от deadmustdie email on 24-Май-12, 16:13 
> Простите, не совсем понял идею

Битовая маска формируется из строки, состоящей из ноликов и единиц, путем установки соответствующих битов в маске.

Пользовательский класс может содержать оператор преобразования себя в строку, состоящую из ноликов и единиц, для обеспечения формирования битовой маски из данной строки. Логика формирования такой строки - целиком пользовательская (как и класс).

Естественно, аналогично можно написать метод, заполняющий битовую маску на основе данных класса. Объем ручной работы примерно одинаков в обоих случаях.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру