Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сделать массив int,string,double,double в какой нить один объект или...

1.6K
22 июня 2007 года
Grom2025
82 / / 20.03.2003
Нид хелп!

Пишу программу глобального позиционирования, рисования ...(бесплатный проект!)

на данный момент пользуюсь для хранения обьектов в памяти кучу TStringList:

 
Код:
TStringList * MyObjects = new TStringList(); // идентификатор  
  TStringList * MyObjectsX = new TStringList(); // координата Lat тип double
  TStringList * MyObjectsY = new TStringList(); // координата Lon тип double
  TStringList * MyObjectsType = new TStringList(); // название (вывожу на карту)


Естесственно приходится всё это дело постоянно преобразовывать

и огромный геморой добавить какую либо есчо фишку (те еще один стринг лист).

Сушествует ли способ собрать массив из неоднородных данных и представить его как симбольную переменную

предупреждаю размер массива должон быть ограничен только памятью

есть у кого предложения?
240
22 июня 2007 года
aks
2.5K / / 14.07.2006
boost::any и подходящий контейнер этого типа? ))
1.6K
22 июня 2007 года
Grom2025
82 / / 20.03.2003
Цитата:
boost::any и подходящий контейнер этого типа



не понял, имеется ввиду библиотека Boost? (я так и не разобрался как её подключить а уж как пользоваться и подавно :( вот такой я долбень... да... знаю тока VCL, но если кто поможет....)

7.3K
22 июня 2007 года
H010d Freeze
143 / / 08.08.2006
Цитата:

массив из неоднородных данных и представить его как симбольную переменную


Что значит представить массив как симбольную переменную? Строку что ли?

Цитата:

есть у кого предложения?


Variant и STL-контейнеры list или vector

1.6K
22 июня 2007 года
Grom2025
82 / / 20.03.2003
Цитата:
Строку что ли?


Извиняйте, неправильно выразился, вот так:

 
Код:
MyObjects[0][0] // допустим идентификатор первого эл тип int
MyObjects[0][1] // координата типа double
MyObjects[0][2] // координата типа double
MyObjects[0][3] // название тип String

MyObjects[n][0] // допустим идентификатор n-ного эл тип int
MyObjects[n][1] // координата типа double
MyObjects[n][2] // координата типа double
MyObjects[n][3] // название тип String


или вместо 0.1.2.3 - именнованные значения (что было б удобнее)

и вообще есть ли реализация типа Memory Table с функциями insert();delete();FiedByName(); ???
92
22 июня 2007 года
Тень Пса
2.2K / / 19.10.2006
а класс сделать? =))) или структуру...

Код:
class TMyObject {
  int id;
  double lat;
  double lon;
  AnsiString name;
};

/**
 * далее
 **/

TMyObject * MyObjects = new TMyObject[_COUNT_];
ну а потом работаешь =) или вместо массива пользуй STL vector
7.3K
22 июня 2007 года
H010d Freeze
143 / / 08.08.2006
Код:
#include <vector>
using namespace std;

struct TItem
{
  double X;
  double Y;
  AnsiString Name;
 
  TItem() : X(0), Y(0) {}
  TItem(double AX, double AY, AnsiString AName) : X(AX), Y(AY), Name(AName) {}
};

vector<TItem> Items;
Items.push_back(TItem(111,222, "Название 1"));
Items.push_back(TItem(333,444, "Название 2"));

// Доступ к элементу по индексу
Items[0].X - координата типа double
Items[0].Y - координата типа double
Items[0].Name - название тип String
7.3K
22 июня 2007 года
H010d Freeze
143 / / 08.08.2006
Цитата:

и вообще есть ли реализация типа Memory Table с функциями insert();delete();FiedByName(); ???



Для доступа к элементу по наименованию можно использовать ассоциативный массив

map<AnsiString, TItem> MyMap;
MyMap["Name 1"].X = 111;
MyMap["Name 2"].Y = 444;

Можно и для vector<TItem> заюзать stl-фукцию find_if и находить Item по наименованию

1.6K
22 июня 2007 года
Grom2025
82 / / 20.03.2003
ой спасиб!

а поиск только ручками?... перебором тоесь??
240
22 июня 2007 года
aks
2.5K / / 14.07.2006
Цитата: Grom2025
не понял, имеется ввиду библиотека Boost? (я так и не разобрался как её подключить а уж как пользоваться и подавно


А что там подключать? хедеры инклюдишь и все. Шаблонная либа)
+ контейнер подходящий оттуда же или STL.

Можно конечно Variant как советуют исспользовать. Но это менее универсально. )

1.6K
22 июня 2007 года
Grom2025
82 / / 20.03.2003
Граждане а как эту vector правильно удалить... при закрытии приложения ругается на access violation write adres 0000000d

free() - не помог
delete - не хочет
8.8K
23 июня 2007 года
Se AD WMD
165 / / 10.01.2007
Цитата: Grom2025
Граждане а как эту vector правильно удалить... при закрытии приложения ругается на access violation write adres 0000000d

free() - не помог
delete - не хочет


Попробуй не через вектор а DynamikArray <TItems> array;
-тож самое, только не выдаёт ошибку при закрытии проги.

1.6K
23 июня 2007 года
Grom2025
82 / / 20.03.2003
:) Ну чтож, спасибо всем за хелп!

Итоги:

Работает и vector и DynamicArray(честно справку по нему читал, но не догадался что в массив мона и структуру запихать)

vector начал выдаваать ошибку (точнее не он, а Thread)
 
Код:
mthr->Terminate();// TfrmMain::FormDestroy(TObject *Sender)


видимо после подключения
 
Код:
#include <vector>
using namespace std;

почему не помогло комментирование инклуда не знаю (может кто подскажет)
1
23 июня 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Grom2025
:) Ну чтож, спасибо всем за хелп!

Итоги:

Работает и vector и DynamicArray(честно справку по нему читал, но не догадался что в массив мона и структуру запихать)

vector начал выдаваать ошибку (точнее не он, а Thread)
 
Код:
mthr->Terminate();// TfrmMain::FormDestroy(TObject *Sender)


видимо после подключения
 
Код:
#include <vector>
using namespace std;

почему не помогло комментирование инклуда не знаю (может кто подскажет)



отладчик тебе подскажет. у тебя происходит разрушение объекта и он удаляется дважды - в массиве и самостоятельно. читать литературу для ньюбов.

1
23 июня 2007 года
kot_
7.3K / / 20.01.2000
или поток уже завершен, а ты пытаешься завершить еще раз
386
25 июня 2007 года
newcss
297 / / 05.04.2005
Вообщем есть библиотека...
Код:
...
#include<vector>
...
 
struct to{
string clas;
int index;
string value;
}tok;
 
vector<to> tokens;


Ну а дальше ты можешь вставлять, удалять... изменять... вообщем все такое в этом духе...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог