Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035

Работа со списком STL

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

Студворк — интернет-сервис помощи студентам
мне надо как-то обрабатывать данные списка( вставлять, вынимать).
как бы сам список объявляется по стандарту так
C++
1
list<int> myList;
а мне надо записывать в список данные разных типов(таких как byte, word, dword).
Как быть?
Шаблон объявления написать таким образом
C++
1
template list<T> myList;
не катит, выдает ошибку
error C2065: T: необъявленный идентификатор
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2010, 19:54
Ответы с готовыми решениями:

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

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

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

10
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
30.09.2010, 00:04
Цитата Сообщение от ht1515 Посмотреть сообщение
как бы сам список объявляется по стандарту так
C++
1
list<int> myList;
вместо int укажите свой тип.

Добавлено через 3 минуты
или вы имеете в виду использование одного контейнера для разных типов данных?
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
30.09.2010, 00:19
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 использовать, или его оберток, если конечно в этом есть нужда
1
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
30.09.2010, 23:15  [ТС]
понятно.

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

error C2440: инициализация: невозможно преобразовать 'int' в 'std::list<_Ty>::_Iterator<_Secure_valid ation>'
Вообщем не могу понять.
Сделал так
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, вашим вариантом попробую чуть позже.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
30.09.2010, 23:34
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от 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/... 8348b7683c
3
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
01.10.2010, 11:50  [ТС]
CyBOSSeR, это буст, я про стл писал вроде.
я это сделал через структуру.
https://www.cyberforum.ru/cpp/... post995209
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
01.10.2010, 12:21
ht1515, в STL ничего подобного нет. Ваш велосипед со структурой слишком затратное решение. Что Вам мешает использовать готовое решение из буста?
Кроме того, если Вы пишете на C++ CLI, так используйте класс List<ValueType> и вместо int - Int32, вместо short - Int16, вместо char - Char и будет Вам счастье - тип всегда узнаете.
0
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
01.10.2010, 20:47  [ТС]
CyBOSSeR, спасибо. Я понимаю. Вы правы. Просто иногда случается когда нужно велосипед сделать.

Добавлено через 8 часов 22 минуты
а что насчет вопроса про итератор в 4 сообщении моем?
Как бы то что я делаю это же лишняя трата времени. Неужели нельзя итератору присвоить значение?Или оно через указатели как то присваивается по хитрому.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
01.10.2010, 23:33
ht1515, может всеже
C++
1
2
list<MyStruct>::iterator k;
*k = Convert::ToInt32(comboBox2->Text);
1
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
02.10.2010, 00:29  [ТС]
ага ... так и думал что через ссылки.
Вот я дуримар... ладно спасибо)
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
02.10.2010, 00:33
ой, я страшную вещь написал, итератор должен быть получен из списка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2010, 00:33
Помогаю со студенческими работами здесь

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

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

Работа с библиотекой STL
Вроде задание несложное, но не могу понять в чем проблема Само задание: В текстовом файле сохраняется информация про абонентов библиотеки...

Работа с последовательностями (stl)
Работа с библиотекой STL (vector, list, deque).. -Даны две последовательности целых чисел. Удалить из первой последовательности все...

Работа в С++ с *.STL файлами
Подскажите пожалуйста, какую технологию выбрать для работы с *.STL файлами, и если возможно, небольшое интро в нее. Мне нужно считывание и...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru