ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #4151  
Старый 01.11.2009, 01:18
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

потому что вызвыать resumethread можно только из активного потока, потому как сонный ничего не может делать(правда логично?).

чтото из твоих вопросов вырисовывается чудовищная архитектура сетевого приложения. попробуй прочитать статьи на codeproject'e или у каких нить русских сайтов. на васме том же основы по сокетам.
 
Ответить с цитированием

  #4152  
Старый 01.11.2009, 17:09
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме:
89596

Репутация: 21
Отправить сообщение для VIP с помощью ICQ
По умолчанию

Здравствуйте! Возник следующий вопрос:

Имеется массив vector<int> elements, есть число в переменной int del_element. Необходимо найти в elements элемент со значением del_element и если он есть, то удалить его из elements.

Так как по вектору ходят с помощью итераторов, то как мне его сравнить с int?
 
Ответить с цитированием

  #4153  
Старый 01.11.2009, 17:18
Irdis
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме:
1576821

Репутация: 88
Отправить сообщение для Irdis с помощью ICQ
По умолчанию

если не ошибаюсь так
Код:
std::vector<int>::iterator channelIter = intVector.begin()
std::cout<< (int)(*channelIter);

Последний раз редактировалось Irdis; 01.11.2009 в 17:31..
 
Ответить с цитированием

  #4154  
Старый 01.11.2009, 17:33
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме:
89596

Репутация: 21
Отправить сообщение для VIP с помощью ICQ
По умолчанию

Цитата:
Сообщение от Irdis  
если не ошибаюсь так
Код:
std::vector<int>::iterator channelIter = intVector.begin()
cout<< (int)(*channelIter);
Да, скомпилилась, но при работе вылетает с ошибкой.

На всякий случай, вот вся функция:

Код:
void del(){
	int del_element;
	system("cls");
	printf("Enter del elemet:\n");
	scanf_s("%d", &del_element);
	for(vector<int>::iterator i = elements.begin(); i != elements.end(); i++){
		if((int)(*i) == del_element){
			elements.erase(i);
		}
	}
Методом поочерёдного исключения строк выяснил, что ошибку при выполнении вызывает строка:
Код:
elements.erase(i);

Последний раз редактировалось VIP; 01.11.2009 в 17:47..
 
Ответить с цитированием

  #4155  
Старый 01.11.2009, 17:46
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Код:
#include <iostream>
#include <vector>
#include <boost/bind.hpp>
#include <boost/foreach.hpp>
#include <functional>
#include <algorithm>

using namespace std;

int main()
{
	vector<int> elements;

	elements.push_back(1);
	elements.push_back(2);
	elements.push_back(3);
	elements.push_back(4);
	elements.push_back(5);

	int del_element = 3;

	cout << "before remove:";
	BOOST_FOREACH(int val, elements) cout << " " << val;

	vector <int>::iterator new_end = remove_if(elements.begin(), elements.end(), 
            boost::bind(std::equal_to<int>(), _1, del_element));
	elements.erase (new_end, elements.end( ) );

	cout << "\nafter remove: ";
	BOOST_FOREACH(int val, elements) cout << " " << val;

	cout << '\n';

	system("pause");
}
вариант удаления юзая boost и stl(без циклов, описанных вручную, что имхо гораздо нагляднее и быстрее понимается).

Последний раз редактировалось Ra$cal; 01.11.2009 в 17:48..
 
Ответить с цитированием

  #4156  
Старый 01.11.2009, 17:49
Irdis
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме:
1576821

Репутация: 88
Отправить сообщение для Irdis с помощью ICQ
По умолчанию

нет с erase должно быть всё ок
ошибку в студию
 
Ответить с цитированием

  #4157  
Старый 01.11.2009, 17:54
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

с вектором кстати проще работать не через иетарторы, а через оператор [], как с обычным массивом.
Код:
for(int i = 0; i < elements.size(); i++){
    if(elements[i] == del_element){
        elements.erase(elements.begin() + i);
        // важный момент. из-за удаления пропускаем одну запись, если не править i
        i--;
    }
}

Последний раз редактировалось Ra$cal; 01.11.2009 в 18:13..
 
Ответить с цитированием

  #4158  
Старый 01.11.2009, 17:57
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме:
89596

Репутация: 21
Отправить сообщение для VIP с помощью ICQ
По умолчанию

Цитата:
Сообщение от Irdis  
нет с erase должно быть всё ок
ошибку в студию
извиняюсь за принт-скрин, но думаю так будет точнее:

 
Ответить с цитированием

  #4159  
Старый 01.11.2009, 18:11
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

кстати, в примере с erase, который я привел, обязательно делай break после удаления элемента или делай декремент счетчика i, т.к. сбивается связь указателя и записей в векторе, можно проскочить запись после каждого удаления.
 
Ответить с цитированием

  #4160  
Старый 01.11.2009, 18:14
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме:
89596

Репутация: 21
Отправить сообщение для VIP с помощью ICQ
По умолчанию

Цитата:
Сообщение от Ra$cal  
кстати, в примере с erase, который я привел, обязательно делай break после удаления элемента или делай декремент счетчика i, т.к. сбивается связь указателя и записей в векторе, можно проскочить запись после каждого удаления.
Хорошо, спасибо за помощь и за подсказку! Учту.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP, PERL, MySQL, JavaScript 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ