powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как узнать, какой тип данных хранится в vector ?
10 сообщений из 10, страница 1 из 1
как узнать, какой тип данных хранится в vector ?
    #34882439
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34882448
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще вопрос, что здесь неправильного?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
bool MailSession::IsSecureCookies()
{
	std::vector<stCookie>::iterator p = m_v_cookies.begin();

	for (; p++; p != m_v_cookies.end())
		if (p->secure)
			return true;

	return false;
}// IsSecureCookies()


for (; p++; p != m_v_cookies.end())
error C2451: conditional expression of type 'std::vector<_Ty>::iterator' is illegal
with
[
_Ty=stCookie
]
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34882452
Tubrik
Смотря в каком смысле. Можно пролистать программу до места объявления объекта типа vector< SomeType > и своими глазами увидеть, что в векторе хранится SomeType. Если речь за "метапрограммирование" зашла, то у всех контейнеров (и вектора тоже) имеется вложенное объявление value_type:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
#include <iostream>
#include <vector>
#include <list>

template< class ContT >
void F(ContT c, typename ContT::value_type x)
{
	std::cout << x << std::endl; 
}


int main()
{
	using namespace std;

	vector< int > v( 10 ,  0 );
	list< double > l;
	l.push_back( 3 . 14 );
	F(v, v[ 0 ]);
	F(l, *l.begin());

	system("pause");
}
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34882456
daevaorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tubrikеще вопрос, что здесь неправильного?

Код: plaintext
1.
	for (; p++; p != m_v_cookies.end())

а ты можешь объяснить, что эта строчка должна делать?
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34882460
[quot Tubrik]еще вопрос, что здесь неправильного?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
bool MailSession::IsSecureCookies()
{
	std::vector<stCookie>::iterator p = m_v_cookies.begin();

	for (; p++; p != m_v_cookies.end()) //наоборот
		if (p->secure)
			return true;

	return false;
}// IsSecureCookies()
Наверное надо поменять местами "p++" и "p != m_v_cookies.end()" - он же говорит условное выражение неверное.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
bool MailSession::IsSecureCookies()
{
	std::vector<stCookie>::iterator p = m_v_cookies.begin();

	for (; p != m_v_cookies.end(); ++p)
		if (p->secure)
			return true;

	return false;
}// IsSecureCookies()
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34882473
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
действительно, местами поменять =))
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34883934
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik пишет:

Этого делать не надо, ты его всегда знаешь, потому что всегда задаешь руками.
А полиморфных векторов не бывает. Есть полиморфные вектора указателей,
но если ты их используешь, ты опять-таки знаешь, какой базовый класс там хранится.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34884741
MasterZiv
Tubrik пишет:

Этого делать не надо, ты его всегда знаешь, потому что всегда задаешь руками.
А полиморфных векторов не бывает. Есть полиморфные вектора указателей,
но если ты их используешь, ты опять-таки знаешь, какой базовый класс там хранится.
Posted via ActualForum NNTP Server 1.4
Иногда очень даже надо - например, в шаблоне (в нем еще нет конкретных типов):
Код: plaintext
1.
2.
3.
4.
5.
6.
template< class ContT >
void F(ContT c, typename ContT::value_type x)
{
	// Какого ("заданного руками") типа x? - Заранее, вообще говоря, неизвестно
	std::cout << x << std::endl; 
}
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34885377
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Палло пишет:

> template< class ContT >
> void F(ContT c, typename ContT::value_type x)
> {
> // Какого ("заданного руками") типа x? - Заранее, вообще говоря, неизвестно
> std::cout << x << std::endl;
> }

Нет, здесь наоборот не надо знать про тип x, и даже вредно это знать.
Надо написать код, который требует определенной функциональности от типа объекта
x и все. При компиляции кода выяснится, есть эта функциональность у x или нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как узнать, какой тип данных хранится в vector ?
    #34886315
MasterZiv
Павел Палло пишет:

> template< class ContT >
> void F(ContT c, typename ContT::value_type x)
> {
> // Какого ("заданного руками") типа x? - Заранее, вообще говоря, неизвестно
> std::cout << x << std::endl;
> }

Нет, здесь наоборот не надо знать про тип x, и даже вредно это знать.
Надо написать код, который требует определенной функциональности от типа объекта
x и все. При компиляции кода выяснится, есть эта функциональность у x или нет.
Posted via ActualForum NNTP Server 1.4
Вероятно, тебе этого действительно никогда не надо, однако не стоит так категорично обобщать. Бывает, что и "надо" - есть даже такой механизм SFINAE (Substitution Failure Is Not An Error) , позволяющий разруливать хитрые ситуации, без попыток компилировать программу для проверки "есть эта функциональность у x или нет".
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как узнать, какой тип данных хранится в vector ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]