powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / stl, remove()
19 сообщений из 19, страница 1 из 1
stl, remove()
    #35012312
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем ему remove() не нравится?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include <iostream>
#include <algorithm>
#include <list>

typedef std::list<std::string> list_str;
list_str my_list;


int main( void )
{
	std::string rem("str_1");
	my_list.push_back("str_1");
	std::cout << std::endl << "my_list.size() = " << (unsigned)my_list.size() << std::endl;
	std::remove(my_list.begin(), my_list.end(), rem);
	std::cout << std::endl << "my_list.size() = " << (unsigned)my_list.size() << std::endl;
}

...
Рейтинг: 0 / 0
stl, remove()
    #35012377
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в другом проекте использую remove() в таком же формате, и все пахает как надо, причем там не подключаю #include <algorithm> вовсе

если не подключаю в этом примере, то получаю ругань компилятора, что remove() не может принимать 3 аргумента
...
Рейтинг: 0 / 0
stl, remove()
    #35012397
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikв другом проекте использую remove() в таком же формате, и все пахает как надо, причем там не подключаю #include <algorithm> вовсе

если не подключаю в этом примере, то получаю ругань компилятора, что remove() не может принимать 3 аргумента
со вторым понятно
#include <stdio.h>
int remove(const char *pathname);
и как не догадался?
...
Рейтинг: 0 / 0
stl, remove()
    #35012415
daevaorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кому ему? Деде Толику из соседней квартиры?
...
Рейтинг: 0 / 0
stl, remove()
    #35012481
daevaorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И не понятно чего вообще ты хочешь добиться от кода. size() дважды вернет 1
...
Рейтинг: 0 / 0
stl, remove()
    #35012497
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded Tubrikв другом проекте использую remove() в таком же формате, и все пахает как надо, причем там не подключаю #include <algorithm> вовсе

если не подключаю в этом примере, то получаю ругань компилятора, что remove() не может принимать 3 аргумента
со вторым понятно
#include <stdio.h>
int remove(const char *pathname);
и как не догадался?

не знал, что есть такой.
а std:: разве не указывает использовать другой remove()

авторdaevaorn
компилятору наверно..
я не знал, что remove() не удаляет объект, из-за чего возникла проблема, и в отдельном примере пытался понять, че к чему (уже узнал, что надо + erase()), но в примере отказывается компилировать, хотя в основном коде нормально.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include <list>
#include <iostream>

typedef std::list<std::string> list_str;
list_str my_list;


int main( void )
{
	std::string rem("str_1");
	my_list.push_back("str_1");
	std::remove(my_list.begin(), my_list.end(), rem);
}
...
Рейтинг: 0 / 0
stl, remove()
    #35012509
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
typedef std::list<std::string> list_str;

list_str
   my_list;

list_str::iterator
   result;

std::string
   rem("str_1");

my_list.push_back("str_1");
std::cout<<std::endl<<"my_list.size()="<<my_list.size()<<std::endl;
result=remove(my_list.begin(),my_list.end(),rem);
std::cout<<std::endl<<result->begin()<<std::endl;
std::cout<<std::endl<<"my_list.size()="<<my_list.size()<<std::endl;
my_list.remove(rem);
std::cout<<std::endl<<"my_list.size()="<<my_list.size()<<std::endl;
daevaorn
И не понятно чего вообще ты хочешь добиться от кода

Вы уж, действительно, определитесь чего же Вы, на самом-то деле, хотите...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
stl, remove()
    #35012538
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ваш пример не собирается на строке:
Код: plaintext
std::cout<<std::endl<<result->begin()<<std::endl;

error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>::iterator' (or there is no acceptable conversion)
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]

хочу добиться, чтобы собиралось, че ж тут непонятного
...
Рейтинг: 0 / 0
stl, remove()
    #35012539
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно, что борланд и микрософт по разному воспринимают этот код ))
чтобы компилилось в VC++ 2005 надо включить ещё #include <string> - тогда будет компилить
борланду такого включения не надо
...
Рейтинг: 0 / 0
stl, remove()
    #35012542
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не сразу заметил, надо писать:

Код: plaintext
1.
std::cout<<std::endl<<*result<<std::endl;

да уж, со стрингом все работает, спасибо
...
Рейтинг: 0 / 0
stl, remove()
    #35012543
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
#include <list>
#include <algorithm>
#include <iostream>
....
#if defined(TEST_LIST)
    typedef std::list<std::string> list_str;

    list_str
      my_list;

    list_str::iterator
      result;

    std::string
      rem("str_1");

    my_list.push_back("str_1");
    std::cout<<std::endl<<"my_list.size()="<<my_list.size()<<std::endl;
    result=remove(my_list.begin(),my_list.end(),rem);
    std::cout<<std::endl<<result->begin()<<std::endl;
    std::cout<<std::endl<<"my_list.size()="<<my_list.size()<<std::endl;
    my_list.remove(rem);
    std::cout<<std::endl<<"my_list.size()="<<my_list.size()<<std::endl;
#endif
....
Тупо вырезал из кода...


P.S. BCB6+Upg4

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
stl, remove()
    #35012546
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
маленький подвопросик остался, почему std::remove() не дает точно понять какой именно remove() нужно использовать?
...
Рейтинг: 0 / 0
stl, remove()
    #35012551
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftP.S. BCB6+Upg4 У автора - мелкософт )))
...
Рейтинг: 0 / 0
stl, remove()
    #35012552
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikмаленький подвопросик остался, почему std::remove() не дает точно понять какой именно remove() нужно использовать? так stdio.h тоже в std включён
...
Рейтинг: 0 / 0
stl, remove()
    #35012555
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych Ex_SoftP.S. BCB6+Upg4 У автора - мелкософт )))

а это влияет на:
Код: plaintext
std::cout<<std::endl<<result->begin()<<std::endl;
? что у меня не собирается с result->begin() ?

тогда не понял, почему в др. проекте без #include <algorithm> и без std::понимает какой remove() использовать, хотя #include <stdlib.h> также присутствует
...
Рейтинг: 0 / 0
stl, remove()
    #35012866
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik
а это влияет на:
Код: plaintext
1.
std::cout<<std::endl<<result->begin()<<std::endl;
? что у меня не собирается с result->begin() ?

Страуструп
"Простой" remove () записывает все несоответствующие элементы в начало последовательности и возвращает итератор на конец этой уплотненной подпоследованности.

Соответственно, поскольку у нас std::list < std::string >, то итератор указывает на std::string , котрый в свою очередь являецо typedef 'ом std::basic_string 'а. Отсюда result ->begin() equ std::basic_string ->begin()
Help (Standard C++ Library: Class Reference)
basic_string

Iterators

iterator begin ();
const_iterator begin () const;

Returns an iterator initialized to the first element of the string.

(Сиречь char * )
В общем - смотрите как мелкософт реализовал std::basic_string ...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
stl, remove()
    #35013016
Leshij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On Sat, 15 Dec 2007 21:13:06 +0300, egorych <nospam@sql.ru>; wrote:

> так stdio.h тоже в std включён

Нет. Сишные хэдеры не входят в namespace std. В неплюсплюснутом си вообще
такого понятия как namespace нету.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
stl, remove()
    #35013038
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$(BCB)\include\stdio.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#ifdef __cplusplus
namespace std {
#endif /* __cplusplus */
....
#ifdef __cplusplus
} // std
#endif /* __cplusplus */

#if defined(__cplusplus) && !defined(__USING_CNAME__) && !defined(__STDIO_H_USING_LIST)
#define __STDIO_H_USING_LIST
....
      using std::remove;
....
#endif /* __USING_CNAME__ */
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
stl, remove()
    #35013046
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предваряя последующий: "Так то ж - стройка!!!"
Страуструп
Для каждого заголовочного файла стандартной библиотеки языка C < X .h>, имеется соответствующий стандартный заголовочный файл C++ < cX >. Например, #include<cstdio> обеспечивает то же, что и #include<stdio.h> . Типичный stdio.h будет выглядеть следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#ifdef __cplusplus
namespace std {

extern "C" {
#endif

....
int printf(const char* ...);
....

#ifdef __cplusplus
}
}
....
using std::printf;
....
#endif

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / stl, remove()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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