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

bool vector - C++

Восстановить пароль Регистрация
 
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
25.10.2013, 18:59     bool vector #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
#include <vector>
 
int main()
{
 
  vector<bool> myBool(10);
  
  for(int i=0;i!=myBool.size();++i)
  {
    cin>>myBool[i];//здесь ругается. почему??
  }
 
  return 0;
}
ошибка:
error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::_Vb_reference<_Alloc>' (or there is no acceptable conversion)

Добавлено через 23 минуты
up.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.10.2013, 19:09     bool vector #2
Цитата Сообщение от slipp1 Посмотреть сообщение
здесь ругается. почему??
Не может ввести. Специфика вектора bool. http://alenacpp.blogspot.ru/2005/06/vector.html
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
25.10.2013, 19:14     bool vector #3
А как ты планируешь вводить bool?)
Используй какую-нибудь промежуточную переменную, вводи в нее, а затем ее преобразуй в bool.
Да, и != в цикле может тебе в один прекрасный момент такую свинью подкинуть... < используй, чтоб наверняка.
Avazart
 Аватар для Avazart
6905 / 5145 / 253
Регистрация: 10.12.2010
Сообщений: 22,630
Записей в блоге: 17
25.10.2013, 21:08     bool vector #4
Используй std::vector<char> myBool(10); или std::bitset<>

P.S.: vector<bool> - еще то позорище STL
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.10.2013, 21:11     bool vector #5
Цитата Сообщение от monolit Посмотреть сообщение
Да, и != в цикле может тебе в один прекрасный момент такую свинью подкинуть...
Какую же?
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
27.10.2013, 18:46     bool vector #6
Да все просто. Вдруг переменная i где нибудь в цикле изменится, == никогда не будет, и тогда долго ловить ошибку будешь... Не в этом случае, конечно, но раз написано !=, то с большой долей вероятности так пишете везде, так что..
castaway
27.10.2013, 18:54
  #7

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
P.S.: vector<bool> - еще то позорище STL
С чего это?

OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
27.10.2013, 18:59     bool vector #8
Цитата Сообщение от castaway Посмотреть сообщение

Не по теме:

С чего это?

Потому что это не вектор, и не bool'ов.

Но да, это не позорище. Это памятник, поставленный в назидание. Показывающий, что надо думать перед тем, как реализовывать гениальные идеи.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 19:09     bool vector #9
А в чём проблема то?

Добавлено через 5 минут
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Это памятник, поставленный в назидание. Показывающий, что надо думать перед тем, как реализовывать гениальные идеи.
Если хочется сказать что тип bool глупо использовать в контейнерах - почему бы так и не сказать? Да и причины не плохо бы услышать..
А то, что в этом виноваты шаблоны - чушь собачья.

Добавлено через 1 минуту
OhMyGodSoLong, ты говоришь красиво, но бестолково.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
27.10.2013, 20:04     bool vector #10
Цитата Сообщение от castaway Посмотреть сообщение
А в чём проблема то?
В том, что vector<bool> не обязан соблюдать шаблонный интерфейс вектора. Он не обязан возвращать нормальные итераторы. Он не обязан быть идентичным внутри сишному массиву. Именно эта специализация и является ошибкой комитета по стандартизации. Они это признают, но исправлена она не будет никогда, потому что обратная совместимость.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 20:07     bool vector #11
OhMyGodSoLong, наверняка об этом где-то сказано..?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
27.10.2013, 20:08     bool vector #12
В смысле? Проблема, описанная в документации, проблемой быть не перестаёт. И того, что пользоваться vector<bool> не рекомендуется, это не отменяет. Но с этим можно только смириться.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 20:10     bool vector #13
А где это сказано в документации?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
27.10.2013, 20:11     bool vector #14
Цитата Сообщение от castaway Посмотреть сообщение
А где это сказано в документации?
о специализации вектора есть в стандарте целая глава.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 20:16     bool vector #15
Цитата Сообщение от Croessmah Посмотреть сообщение
о специализации вектора есть в стандарте целая глава.
Вопрос не о главе о векторах в стандарте, а о том, что
Цитата Сообщение от Avazart Посмотреть сообщение
P.S.: vector<bool> - еще то позорище STL
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
27.10.2013, 20:19     bool vector #16
Цитата Сообщение от castaway Посмотреть сообщение
Вопрос не о главе о векторах в стандарте, а о том, что
не напишут же в документации что vector<bool> лажа, а в нете тьма статей как раз по данной тематике.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
27.10.2013, 20:25     bool vector #17
Цитата Сообщение от castaway Посмотреть сообщение
А где это сказано в документации?
Там не сказано и то, что два раза вызывать delete не рекомендуется. Но это не значит же, что надо бежать сломя голову так делать.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
27.10.2013, 20:28     bool vector #18
Пытались так сказать сделать экономный контейнер, в результате чего получилось так, что контейнер перестал быть контейнером.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 20:28     bool vector
Еще ссылки по теме:

C++ Упаковка std :: vector <bool> в байты
C++ Ошибка при использовании vector<bool>
Vector<bool> и visual c++ C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 20:28     bool vector #19
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Там не сказано и то, что два раза вызывать delete не рекомендуется.
Это очевидно, вопреки другому..
Yandex
Объявления
27.10.2013, 20:28     bool vector
Ответ Создать тему
Опции темы

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