Форум программистов, компьютерный форум CyberForum.ru

Массив как в js - C++

Восстановить пароль Регистрация
 
ArtMaster
26 / 24 / 3
Регистрация: 27.10.2012
Сообщений: 74
27.12.2012, 11:21     Массив как в js #1
Помогите реализовать классы для массива js

Основная проблема это хранение данных вида a={pro:'123', prot: 1245, asd : '321'}

Как это можно сделать? Можно просто идеями поделится
C++
1
2
3
4
5
6
7
8
9
10
template<class Type>
class Variable{
    public:
    string name;
    string type;
    Type expr;
    Variable(Type a){
        expr=a;
    }
};
Вот так я создаю переменную type(string, integer, double).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
27.12.2012, 11:35     Массив как в js #2
Пример реализации есть в проекте dmd.2.060.zip со страницы http://dlang.org/download.html
Конкретно в файле root/aav.c

Если правильно понимаю, вы хотите реализовать ассоциативный массив ( по другому хэш)?
ArtMaster
26 / 24 / 3
Регистрация: 27.10.2012
Сообщений: 74
27.12.2012, 11:39  [ТС]     Массив как в js #3
ну да ассоциативный массив, только все что я нашел в интернете связано с map, а там нельзя хранить тот пример который я написал.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
27.12.2012, 12:20     Массив как в js #4
Вообще это не массив, а объект. Делаете класс/структуру. Первое поле типа string (название свойства), второе что-то шаблонное. Дальше создаете класс, с этими свойствами.
ArtMaster
26 / 24 / 3
Регистрация: 27.10.2012
Сообщений: 74
27.12.2012, 15:26  [ТС]     Массив как в js #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
template<class Name, class Type>
class Variable{
    public:
    Name name;
    Type expr;
};
 
 
 
int main(){
    Variable<string, double> t[100];     
}
вот так можно создать, но это не сработает если какой-либо элемент массива будет string, как это можно исправить?

Добавлено через 1 час 17 минут
можно ли объявить в классе переменную public после его создания?

C++
1
Variable<string, double> t[100];
после этого добавить переменную
rus_phantom
6 / 6 / 1
Регистрация: 31.03.2011
Сообщений: 69
27.12.2012, 16:01     Массив как в js #6
Я смотрю ты хочешь хранить в массиве разные данные в перемешку? Тогда может подойти такой вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
enum e_types {
   jsInt,
   jsString
};
 
struct js_object {
   e_types type;
   void* data;
};
 
map<string,js_object> js_map;
Таким образом ты создаешь объект, в который помещаешь ссылку на твои данные и его тип (чтобы потом можно было узнать что ты запихнул в мапу). После этого просто создаешь хеш-массив и работаешь с ним. Только будь осторожен с void*
ArtMaster
26 / 24 / 3
Регистрация: 27.10.2012
Сообщений: 74
27.12.2012, 16:09  [ТС]     Массив как в js #7
да мне нужно в перемешку, сейчас попробую)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 17:24     Массив как в js
Еще ссылки по теме:

C++ Объявить массив? Запросто! Объявить массив массивов? А как это?
C++ Как перевести массив строк в массив int
C++ Как загнать текст из консоли в массив и как загнать текст из файла в массив

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
27.12.2012, 17:24     Массив как в js #8
есть boost::any, boost::variant ну и всякие аналоги в других библиотеках. вот для ознакомления:
http://hghltd.yandex.net/yandbtm?tex...558c60&keyno=0
хм. форум битую ссылку вставляет почему-то. в любом случае ключевые слова для поиска:
boost::variant
boost::any
Yandex
Объявления
27.12.2012, 17:24     Массив как в js
Ответ Создать тему
Опции темы

Текущее время: 04:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru