Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> boost::array - как создать 2-ый массив? 
V
    Опции темы
Alca
Дата 30.3.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Kак создать 2-ый массив, используя только boost::array (boost::multi_array видел)?
Пока у меня так:
Код

    //--const tString casMonths[12][2] = {
    const boost::array<tString, 2> casMonths[12] = {
        { xT("January"),    xT("Jan") },
        { xT("February"),   xT("Feb") },
        { xT("March"),      xT("Mar") },
        { xT("April"),      xT("Apr") },
        { xT("May"),        xT("May") },
        { xT("June"),       xT("Jun") },
        { xT("July"),       xT("Jul") },
        { xT("August"),     xT("Aug") },
        { xT("September"),  xT("Sep") },
        { xT("October"),    xT("Oct") },
        { xT("November"),   xT("Nov") },
        { xT("December"),   xT("Dec") }
    };


Это сообщение отредактировал(а) Alca - 30.3.2011, 12:24


--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 30.3.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Alca @  30.3.2011,  12:22 Найти цитируемый пост)
Лак создать 2-ый массив, используя только boost::array

Создать одномерный и играть в арифметические игры с индексом, т.е.
Код

x[i][j] == x[i*size+j]


Добавлено через 1 минуту и 4 секунды
Цитата(Alca @  30.3.2011,  12:22 Найти цитируемый пост)
Пока у меня так

а чем не устраивает?
PM   Вверх
Alca
Дата 30.3.2011, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

а чем не устраивает?

тем что нет проверки выхода за границы массива


--------------------
PM WWW ICQ Skype Jabber   Вверх
mes
Дата 30.3.2011, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Alca @  30.3.2011,  11:22 Найти цитируемый пост)
array<tString, 2> 

Код

array <pair <string, string >, 12>
 ?


--------------------
PM MAIL WWW   Вверх
Alca
Дата 30.3.2011, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Код

array <pair <string, string >, 12>


Код

#include <iostream>
#include <string>
#include <boost/array.hpp>
using namespace std;
//---------------------------------------------------------------------------
int main() {
   boost::array < std::pair<std::string, std::string>, 3 > casMonths = {
      {{ "January",  "Jan" }},
      {{ "February", "Feb" }},
      {{ "March",    "Mar" }}
   };    

     
   return 0;
}
//---------------------------------------------------------------------------

http://liveworkspace.org/code/c9073d8d4417...0658d6ba1f06879

Код

source.cpp: In function 'int main()':
source.cpp:11:4: error: too many
  initializers for 'boost::array<pair<basic_string<char>, basic_string<char> >, 3u>'

Build finished with errors


Это сообщение отредактировал(а) Alca - 30.3.2011, 13:07


--------------------
PM WWW ICQ Skype Jabber   Вверх
mes
Дата 30.3.2011, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



make_pair в помощь..
http://liveworkspace.org/code/a23b6cc4540a...6bcf3799d6a864c

Добавлено через 11 минут и 57 секунд
Цитата(Alca @  30.3.2011,  12:07 Найти цитируемый пост)
 "January",  "Jan" 

а нужно ли их делать частью одного массива ?..

Это сообщение отредактировал(а) mes - 30.3.2011, 13:30


--------------------
PM MAIL WWW   Вверх
Alca
Дата 30.3.2011, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

http://liveworkspace.org/code/a23b6cc4540a...6bcf3799d6a864c

template <class T1,class T2>
  pair<T1,T2> make_pair (T1 x, T2 y)
  {
    return ( pair<T1,T2>(x,y) );
  }

было бы не плохо иметь что-то вроде этого:
Код

boost::make_array

но в boost::array нет конструкторов  smile  

Цитата

а нужно ли их делать частью одного массива ?..

надо подумать  smile 

Это сообщение отредактировал(а) Alca - 30.3.2011, 14:04


--------------------
PM WWW ICQ Skype Jabber   Вверх
baldina
Дата 30.3.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(Alca @  30.3.2011,  14:02 Найти цитируемый пост)
было бы не плохо иметь что-то вроде этого:
код C++
1:
boost::make_array

но в boost::array нет конструкторов    

см. boost::assign
PM MAIL   Вверх
Alca
Дата 30.3.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Т.к. мне не хочу тянуть буст, извратился так:
Код

#include <iostream>
#include <string>
#include <boost/array.hpp>
using namespace std;

//---------------------------------------------------------------------------
template <class TypeT, std::size_t uiNumT>
class CxArray {
    public:
        TypeT tArray[uiNumT];


        //DONE: make_array
        static
        CxArray<TypeT, uiNumT>
        make_array(const TypeT &t1, const TypeT &t2) {
            CxArray<TypeT, uiNumT> aArrayT = {{t1, t2}};

            return aArrayT; 
        }

        //DONE: operator[]
        const TypeT &
        operator[] (size_t uiIndex) const {
            /*DEBUG*/assert(uiIndex < uiNumT);

            return tArray[uiIndex];
        }

        //DONE: operator[]
        TypeT &
        operator[] (size_t uiIndex) {
            /*DEBUG*/assert(uiIndex < uiNumT);

            return tArray[uiIndex];
        }

        //DONE: uiGetSize (get size)
        size_t
        size() const {
            return uiNumT;
        }
};
//---------------------------------------------------------------------------
int main() {
   /*boost::array < std::pair<std::string, std::string>, 3 > casMonths0 = {
      std::make_pair( "January",  "Jan" ),
      std::make_pair( "February", "Feb" ),
      std::make_pair( "March",    "Mar" )
   };*/ 
   
   const CxArray< CxArray<std::string, 2>, 12> casMonths = {{
      CxArray<std::string, 2>::make_array( "January",   "Jan" ),
      CxArray<std::string, 2>::make_array( "February",  "Feb" ),
      CxArray<std::string, 2>::make_array( "March",     "Mar" ),
      CxArray<std::string, 2>::make_array( "April",     "Apr" ),
      CxArray<std::string, 2>::make_array( "May",       "May" ),
      CxArray<std::string, 2>::make_array( "June",      "Jun" ),
      CxArray<std::string, 2>::make_array( "July",      "Jul" ),
      CxArray<std::string, 2>::make_array( "August",    "Aug" ),
      CxArray<std::string, 2>::make_array( "September", "Sep" ),
      CxArray<std::string, 2>::make_array( "October",   "Oct" ),
      CxArray<std::string, 2>::make_array( "November",  "Nov" ),
      CxArray<std::string, 2>::make_array( "December",  "Dec" )
   }};  
  
   for (size_t i = 0; i < casMonths.size(); ++ i) {
       cout << "Index: " << i << " value[0]: " << casMonths[i][0] << endl;
       cout << "Index: " << i << " value[1]: " << casMonths[i][1] << endl; 
   }      
     
   return 0;
}
//---------------------------------------------------------------------------

Код

Index: 0 value[0]: January
Index: 0 value[1]: Jan
Index: 1 value[0]: February
Index: 1 value[1]: Feb
Index: 2 value[0]: March
Index: 2 value[1]: Mar
Index: 3 value[0]: April
Index: 3 value[1]: Apr
Index: 4 value[0]: May
Index: 4 value[1]: May
Index: 5 value[0]: June
Index: 5 value[1]: Jun
Index: 6 value[0]: July
Index: 6 value[1]: Jul
Index: 7 value[0]: August
Index: 7 value[1]: Aug
Index: 8 value[0]: September
Index: 8 value[1]: Sep
Index: 9 value[0]: October
Index: 9 value[1]: Oct
Index: 10 value[0]: November
Index: 10 value[1]: Nov
Index: 11 value[0]: December
Index: 11 value[1]: Dec

http://liveworkspace.org/code/09199077c7b4...860cb2865160dea


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.