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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
ht1515
шарпопочитатель
58 / 25 / 1
Регистрация: 31.01.2010
Сообщений: 949
#1

Работа со списком STL - C++

29.09.2010, 19:54. Просмотров 1736. Ответов 10
Метки нет (Все метки)

мне надо как-то обрабатывать данные списка( вставлять, вынимать).
как бы сам список объявляется по стандарту так
C++
1
list<int> myList;
а мне надо записывать в список данные разных типов(таких как byte, word, dword).
Как быть?
Шаблон объявления написать таким образом
C++
1
template list<T> myList;
не катит, выдает ошибку
error C2065: T: необъявленный идентификатор
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2010, 19:54     Работа со списком STL
Посмотрите здесь:

Работа с двунаправленым списком. STL <list> - C++
Помогите пожалуста найти ошибку.. 3) Даны натуральное число n, действительные числа x1,x2,....,xn . Вычислить: x1*xn+x2*xn-1+...+xn*x1...

Хеш таблица со связанным списком STL - C++
Добрый день. Подскажите пожалуйста как реализуется хеш таблица со связанным списком в stl

Стандартная библиотека шаблонов STL и класс list по работе с двунаправленным списком - C++
здравствуйте. помогите разобраться с данной задачей. Даны натуральное число n, символы S1,S2,...,Sn. будем рассматривать слова,...

Стандартная библиотека шаблонов STL и класс list по работе с двунаправленным списком - C++
Здравствуйте. Решите пожалуйста задачу: Используя стандартную библиотеку шаблонов STL и класс list по работе с двунаправленным списком ...

Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком - C++
Решить задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком. Тип элементов задается как параметр...

Работа с STL vector - C++
Добрый день! Прошу объяснить следующие моменты связанные с &lt;vector&gt; (почему ругается студия, откуда берутся такие результаты) и дать...

Работа с STL list - C++
Есть некий каталог с 3 переменными (string,string,int), который нужно хранить в list Как я понимаю есть 2 решения хранения. 1....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,908
30.09.2010, 00:04     Работа со списком STL #2
Цитата Сообщение от ht1515 Посмотреть сообщение
как бы сам список объявляется по стандарту так
C++
1
list<int> myList;
вместо int укажите свой тип.

Добавлено через 3 минуты
или вы имеете в виду использование одного контейнера для разных типов данных?
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.09.2010, 00:19     Работа со списком STL #3
C++
1
2
3
4
std::list<void*> listVariant;
listVariant.push_back( reinterpret_cast<void*>(new int(100)) );
listVariant.push_back( reinterpret_cast<void*>(new double(1.45)) );
listVariant.push_back( reinterpret_cast<void*>(new std::string("hello!")) );
конечно вы не узнаете какой элемент какого типа

Добавлено через 1 минуту
можно конечно чтото вроде VARIANT использовать, или его оберток, если конечно в этом есть нужда
ht1515
шарпопочитатель
58 / 25 / 1
Регистрация: 31.01.2010
Сообщений: 949
30.09.2010, 23:15  [ТС]     Работа со списком STL #4
понятно.

А вот ещё такая проблема, пишу:
C++
1
2
        list<MyStruct>::iterator k=Convert::ToInt32(comboBox2->Text);
        thelist.insert(k,obj);
хочу вставить элемент после определенного в comboBox2.

error C2440: инициализация: невозможно преобразовать 'int' в 'std::list<_Ty>::_Iterator<_Secure_validation>'
Вообщем не могу понять.
Сделал так
C++
1
2
        list<MyStruct>::iterator k=thelist.begin();
        thelist.insert(k,Convert::ToInt32(comboBox2->Text),obj);
Но это как понял в начало выводит 3 обжа.

как итератору присвоить значение?

Добавлено через 2 часа 54 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    if (comboBox2->Text==""){
        thelist.push_back(obj);
    }
    else{
        list<MyStruct>::iterator k;
        int h=0;
         for (k=thelist.begin();k!=thelist.end();++k){
          MyStruct u=*k;
          h++;
          if (h== Convert::ToInt32(comboBox2->Text)){
           thelist.insert(k,obj);
           break;
          }
         }
так сделал (работает)- но это как то не красиво. Вам не кажется? Может проще есть вариант?

кстати забыл сказать сделал список таким:
C++
1
2
3
4
5
6
7
8
9
struct  MyStruct
{
     char    onebyte;
     short   word;
     int     doubleword;
     int     i;
}obj;
 
list<MyStruct> thelist;
alex_x_x, вашим вариантом попробую чуть позже.
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.09.2010, 23:34     Работа со списком STL #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ht1515 Посмотреть сообщение
а мне надо записывать в список данные разных типов(таких как byte, word, dword).
Как быть?
Использовать boost::any. Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <boost/any.hpp>
 
int main() {
  std::vector<boost::any> v;
  
  v.push_back(100); // int
  v.push_back(1.5); // double
  v.push_back('a'); // char
  
  std::cout << boost::any_cast<int   >(v[0]) << std::endl;
  std::cout << boost::any_cast<double>(v[1]) << std::endl;
  std::cout << boost::any_cast<char  >(v[2]) << std::endl;
    
  return 0;
}
Результат: http://liveworkspace.org/code/24013e...c6088348b7683c
ht1515
шарпопочитатель
58 / 25 / 1
Регистрация: 31.01.2010
Сообщений: 949
01.10.2010, 11:50  [ТС]     Работа со списком STL #6
CyBOSSeR, это буст, я про стл писал вроде.
я это сделал через структуру.
http://www.cyberforum.ru/cpp/thread1...tml#post995209
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.10.2010, 12:21     Работа со списком STL #7
ht1515, в STL ничего подобного нет. Ваш велосипед со структурой слишком затратное решение. Что Вам мешает использовать готовое решение из буста?
Кроме того, если Вы пишете на C++ CLI, так используйте класс List<ValueType> и вместо int - Int32, вместо short - Int16, вместо char - Char и будет Вам счастье - тип всегда узнаете.
ht1515
шарпопочитатель
58 / 25 / 1
Регистрация: 31.01.2010
Сообщений: 949
01.10.2010, 20:47  [ТС]     Работа со списком STL #8
CyBOSSeR, спасибо. Я понимаю. Вы правы. Просто иногда случается когда нужно велосипед сделать.

Добавлено через 8 часов 22 минуты
а что насчет вопроса про итератор в 4 сообщении моем?
Как бы то что я делаю это же лишняя трата времени. Неужели нельзя итератору присвоить значение?Или оно через указатели как то присваивается по хитрому.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
01.10.2010, 23:33     Работа со списком STL #9
ht1515, может всеже
C++
1
2
list<MyStruct>::iterator k;
*k = Convert::ToInt32(comboBox2->Text);
ht1515
шарпопочитатель
58 / 25 / 1
Регистрация: 31.01.2010
Сообщений: 949
02.10.2010, 00:29  [ТС]     Работа со списком STL #10
ага ... так и думал что через ссылки.
Вот я дуримар... ладно спасибо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2010, 00:33     Работа со списком STL
Еще ссылки по теме:

Работа с интервалами STL - C++
Привет всем. Вопрос по STL. Есть vector, заполненный данными и увеличенный до нужных размеров. Нужно &quot;вставить&quot; элемент в вектор, да так...

[STL] Работа со std::string - C++
Привет, форум. Подскажите, как можно грамотно скопировать &quot;слово&quot; из строки, с указанием начала и конца позиций. Например: string...

Работа над множествами,STL - C++
Собственно есть задача: Дан некий текст.Нужно в алфавитном порядке напечатать все гласные буквы входящие в этот текст более двух раз и...

Работа с файлами С++. Библиотека STL - C++
Пожалуйста, подскажите. Файл читает только одну строку, а в файле больше. Пример : Петров Петр Петрович 10 11 68 Иванов Иван...

STL in DLL, нормальная работа не возможна? - C++
Привет! Как известно, STL - это библиотека стандартных шаблонов, то есть template-ная библиотека, но шаблоны экспортировать же нельзя из...


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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
02.10.2010, 00:33     Работа со списком STL #11
ой, я страшную вещь написал, итератор должен быть получен из списка
Yandex
Объявления
02.10.2010, 00:33     Работа со списком STL
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru