Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
71 / 71 / 13
Регистрация: 13.05.2012
Сообщений: 130

Удаление элементов из вектора

16.07.2013, 12:49. Показов 2026. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что я делаю не так
C++
1
2
3
4
5
6
string f="/.+(STL).$1/";
   vector<string> words;
   words.push_back(f);
   vector< string >::iterator first = find( words. begin(), words.end(), "+" );
   vector< string >::iterator last =find( words. begin(), words.end(), "1" );
 words.erase(first,last);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.07.2013, 12:49
Ответы с готовыми решениями:

Удаление элементов вектора
Дана матрица смежности, мне нужно удалить из нее вершину. Это значит, что при удалении вершины номер 3 мне нужно из матрицы удалить 3...

Удаление элементов вектора
как вызвать деструктор? почему не удаляется объект class a { public: a() { std::cout &lt;&lt; &quot;c&quot;; } ~a() { ...

Удаление элементов вектора
Доброе. Данная программа выводит таблицу, и работает с ней. Как удалить строку в таблице? Не получается (как обычно) сделать удаление. Если...

20
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.07.2013, 12:50
Valentina, а что не так?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.07.2013, 12:55
Цитата Сообщение от Jupiter Посмотреть сообщение
Valentina, а что не так?
Думаю, необходимо в строке найти символы + и 1 и удалить все то между ними но это так...пробую телепатию )))
0
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
16.07.2013, 12:58
Croessmah думаю вы правы ага
автор, если это так, то выкиньте вектор и поищите прям в вашей строке f. то же самое сделайте.
0
71 / 71 / 13
Регистрация: 13.05.2012
Сообщений: 130
16.07.2013, 13:13  [ТС]
У меня данная програма выдает туже строку, то есть ничего не удалянтся
C++
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<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    setlocale (LC_CTYPE,"rus");
    
   string f="/.+(STL).$1/";
   vector<string> words;
   words.push_back(f);
   vector< string >::iterator first = find( words. begin(), words.end(), "+" );
   vector< string >::iterator last =find( words. begin(), words.end(), "1" );
 words.erase(first,last);
    
   
    for(vector<string>::iterator ix=words.begin();ix!=words.end();++ix)
    {
        cout<<endl<<(*ix);
    }
 
    system("pause");
    return 0;
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.07.2013, 13:14
Valentina, ты работаешь с вектором строк. При чем тут строка?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.07.2013, 13:17
Цитата Сообщение от Valentina Посмотреть сообщение
У меня данная програма выдает туже строку, то есть ничего не удалянтся
так в векторе нет строк "+" и "-". В векторе только одна строка - "/.+(STL).$1/"
0
71 / 71 / 13
Регистрация: 13.05.2012
Сообщений: 130
16.07.2013, 13:23  [ТС]
Напишите программу, которая удаляет все символы, кроме STL из строки:
"/.+(STL).$1/"
используя сначала erase(pos,count), а затем erase(iter,iter).

как в данной программе применить erase(iter,iter)
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.07.2013, 13:32
Цитата Сообщение от Valentina Посмотреть сообщение
erase(pos,count)
Ищем STL, удаляем с начала строки и до найденной позиции
Цитата Сообщение от Valentina Посмотреть сообщение
erase(iter,iter)
удаляем с итератора, после STL до end
0
71 / 71 / 13
Регистрация: 13.05.2012
Сообщений: 130
16.07.2013, 13:38  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
удаляем с итератора, после STL до end
напишите, пожалуйста, пример
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.07.2013, 13:46
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
using namespace std;
void eraseSumbInStr(string& toCrack, string::size_type posit){
 if(toCrack.size()>posit) toCrack.erase(posit,1);
 else
cout<<"someting wrong with the string "<<toCrack<<" \nat function \"void eraseSumbInStr(string& toCrack, string::size_type posit)\" "<<endl;
}
int main()
{
    string f="/.+(STL).$1/";
   cout<<f;
   string::size_type first = f.find_first_of("+");
   string::size_type last = f.find_first_of("l");//не найдёт
   cout<<endl;
   cout<<first<<" "<<last<<endl;
   eraseSumbInStr(f, first);
   eraseSumbInStr(f, last);
   cout<<f<<endl;
    cin.get();
    return 0;
}
1
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 14:09
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
typedef vector<char>::iterator chit;
int main()
{
    vector<char> words;
    string f="/.+(STL).$1/";
  for (unsigned i=0; i<f.length(); i++)
  {   words.push_back( f.at(i));   }
 for(chit ix=words.begin();ix!=words.end();++ix)
{
    if ((*ix)!='S' && (*ix)!='T' && (*ix)!='L' || (*ix)=='.')
    {
      words.erase(ix);
      ix=words.begin();
    }
}
    for(chit iy=words.begin();iy!=words.end();++iy)
    {        cout<<(*iy)<<endl;   }
 return 0;
}
но почему то не удаляется первая "."
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.07.2013, 14:22
Писал прямо тут, так что...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<string>
#include<iostream>
 
int main(){
    std::string str="/.+(STL).$1/";
    std::string findStr = "STL";
    size_t pos = str.find(findStr);
    if(pos != std::string::npos){
        str.erase(0,pos);
        str.erase(str.begin()+findStr.size(),str.end());
    }else{
        str.clear();
    }
    std::cout<<str<<std::endl;
}
1
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
16.07.2013, 14:31
Цитата Сообщение от soican Посмотреть сообщение
но почему то не удаляется первая "."
а зачем на точку вообще отдельная проверка? Вообще метод erase возвращает итератор, так что не надо ix устанавливать на начало каждый раз. Как-то так, например:

C++
1
2
3
4
5
6
7
for(chit ix=words.begin(); ix!=words.end(); )
{
    if ((*ix)!='S' && (*ix)!='T' && (*ix)!='L')
        ix = words.erase(ix);
    else
        ++ix;
}

Не по теме:

Но ваш код написан не по заданию, т.к. нужен метод erase(iter,iter) :)

1
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 14:56
я нашёл вот такой erase
C++
1
2
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
erase(pos,count) - где такой?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
16.07.2013, 15:04
Цитата Сообщение от soican Посмотреть сообщение
erase(pos,count) - где такой?
2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.07.2013, 16:59
Цитата Сообщение от soican Посмотреть сообщение
C++
1
2
3
4
vector<char> words;
 string f="/.+(STL).$1/";
 for (unsigned i=0; i<f.length(); i++)
 { words.push_back( f.at(i)); * }
C++
1
2
string f("/.+(STL).$1/");
vector<char> words(f.begin(), f.end());
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.07.2013, 17:15
А зачем вообще переводить std::string в std::vector<char> в данном случае?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.07.2013, 17:18
Tulosba, незачем
0
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 17:31
Цитата Сообщение от Tulosba Посмотреть сообщение
А зачем вообще переводить std::string в std::vector<char> в данном случае?
я не знал до этого .erase для string, только для vector
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2013, 17:31
Помогаю со студенческими работами здесь

Удаление элементов из вектора
С консоли вводится вектор значений double и точность, удалить и вектора элементы разность между которыми по модулю меньше точности и...

Удаление элементов вектора
Я конечно понимаю, что вектор это такая штука, которая удаляется сама при выходе из функции в которой она определена. Но мне все же...

Удаление элементов вектора со сдвигом
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; void spc(int x); class...

Удаление всех элементов вектора
Как удалить все элементы вектора. Например Создаём пустой вектор vector&lt;int&gt;numb; заполняем его пятью элементами ...

Удаление из вектора повторяющихся элементов
есть вектор vector&lt;int&gt; array; я считаю в него из файла, подскажите как мне удалить одинаковые цифры, то есть если есть 10 и 10 должно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru