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

"потоковые переменные"... или что-то в этом роде... - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
prosto_lynx
 Аватар для prosto_lynx
49 / 24 / 1
Регистрация: 09.06.2008
Сообщений: 225
04.02.2011, 15:37     "потоковые переменные"... или что-то в этом роде... #1
Есть ли что-нибудь типо потоковых переменных?... (нужно создать поток, в который можно писать с одной стороны и считывать с другой стороны...)

Суть проблемы:
с USB-порта идет информация (в каких количествах и как часто - заранее не известно), но её нужно последовательно обрабатывать.... т.е. считывать в той же последовательности, но через некоторое время....
у меня такая программа реализована с помощью char-массивов:
1) всю пришедшую информацию дописываю в имеющийся массив.
2) при обработке некоторого количества информации из начала массива (той, которая пришла раньше всего), я переписываю всю оставшуюся часть массива на первые места (с помощью memcpy), что бы в массиве у меня снова хранилась информация, считанная с порта, но еще не обработанная...
P.S. Но при такой реализации, мне кажется, очень нерационально используется комп: постоянное переписывание массивов данных - дело не правильное!...((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2011, 15:37     "потоковые переменные"... или что-то в этом роде...
Посмотрите здесь:

массив массивов или что-то в этом роде C++
C++ Клавиатурный шпион или что-то в этом роде
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье" C++
Что можно сказать об этом #include "stdafx.h" C++
C++ Подскажите, пожалуйста, учебник/статью (или что-то в этом роде) про классы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
04.02.2011, 15:45     "потоковые переменные"... или что-то в этом роде... #2
если на с++ пишете, то логично использовать list
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <list>
#include <iostream>
 
int main(){
  std::list<size_t> list;
  for( size_t i=0;i<10;++i ){
    list.push_back( i );
  }
  for( size_t i=0;i<5;++i ){
    std::cout << list.front() << " ";
    list.pop_front();
  }
  for( size_t i=10;i<15;++i ){
    list.push_back( i );
  }
  for( size_t i=0;i<5;++i ){
    std::cout << list.front() << " ";
    list.pop_front();
  }
}
Bash
1
2
Output: 
0 1 2 3 4 5 6 7 8 9
prosto_lynx
 Аватар для prosto_lynx
49 / 24 / 1
Регистрация: 09.06.2008
Сообщений: 225
08.02.2011, 15:12  [ТС]     "потоковые переменные"... или что-то в этом роде... #3
Спасибо, более менее разобрался...

А можно ли (в C++ Builder'е 6.0) как-нибудь (при пошаговом выполнении программы) увидеть, что в данный момент в list находится?..
(как, например, на обычные переменные с контролом щелкаешь и сразу видно, чему они в данный момент равны...)
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.02.2011, 22:38     "потоковые переменные"... или что-то в этом роде... #4
prosto_lynx, в visual studio можно, в билдере не знаю, но думаю наверняка
prosto_lynx
 Аватар для prosto_lynx
49 / 24 / 1
Регистрация: 09.06.2008
Сообщений: 225
09.02.2011, 14:49  [ТС]     "потоковые переменные"... или что-то в этом роде... #5
А подскажите еще по поводу списков:
можно ли считать сразу n-ное количество байт из списка, (если я точно знаю, что считываю заведомо меньше элементов, чем есть в списке)?..
(вопрос родился из соображений ускорить работу в некоторых случаях...)
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
09.02.2011, 17:55     "потоковые переменные"... или что-то в этом роде... #6
prosto_lynx, нет нельзя, тут придется использовать нечто другое
вопрос что чаще приходится делать - читать или перемещать в памяти
из вектора быстрое чтение, но перемещение дорогое
из листа чтение дольше, но перемещение считай ничего не стоит

я пробовал использовать
C++
1
basic_stringstream<int> b( stringstream::in | stringstream::out );
(прародитель stringstream)
но оно работает по совсем другому принципу, можно как-нить по-извращаться и использовать поток в прямом смысле, но пока не знаю как
можно посмотреть как поток реализован
Yandex
Объявления
09.02.2011, 17:55     "потоковые переменные"... или что-то в этом роде...
Ответ Создать тему
Опции темы

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