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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
#1

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

16.07.2013, 12:49. Просмотров 906. Ответов 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);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 12:49     Удаление элементов из вектора
Посмотрите здесь:

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

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

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

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

Массив и Удаление элементов вектора - C++
1)Найти произведение элементов, расположенных между первым и вторым нулевым элементами. 2)Удалить из массива элемент, расположенный после...

Удаление элементов вектора со сдвигом - C++
#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...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.07.2013, 12:50     Удаление элементов из вектора #2
Valentina, а что не так?
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.07.2013, 12:55     Удаление элементов из вектора #3
Цитата Сообщение от Jupiter Посмотреть сообщение
Valentina, а что не так?
Думаю, необходимо в строке найти символы + и 1 и удалить все то между ними но это так...пробую телепатию )))
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
16.07.2013, 12:58     Удаление элементов из вектора #4
Croessmah думаю вы правы ага
автор, если это так, то выкиньте вектор и поищите прям в вашей строке f. то же самое сделайте.
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
16.07.2013, 13:13  [ТС]     Удаление элементов из вектора #5
У меня данная програма выдает туже строку, то есть ничего не удалянтся
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;
}
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.07.2013, 13:14     Удаление элементов из вектора #6
Valentina, ты работаешь с вектором строк. При чем тут строка?
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.07.2013, 13:17     Удаление элементов из вектора #7
Цитата Сообщение от Valentina Посмотреть сообщение
У меня данная програма выдает туже строку, то есть ничего не удалянтся
так в векторе нет строк "+" и "-". В векторе только одна строка - "/.+(STL).$1/"
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
16.07.2013, 13:23  [ТС]     Удаление элементов из вектора #8
Напишите программу, которая удаляет все символы, кроме STL из строки:
"/.+(STL).$1/"
используя сначала erase(pos,count), а затем erase(iter,iter).

как в данной программе применить erase(iter,iter)
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.07.2013, 13:32     Удаление элементов из вектора #9
Цитата Сообщение от Valentina Посмотреть сообщение
erase(pos,count)
Ищем STL, удаляем с начала строки и до найденной позиции
Цитата Сообщение от Valentina Посмотреть сообщение
erase(iter,iter)
удаляем с итератора, после STL до end
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
16.07.2013, 13:38  [ТС]     Удаление элементов из вектора #10
Цитата Сообщение от Croessmah Посмотреть сообщение
удаляем с итератора, после STL до end
напишите, пожалуйста, пример
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6421 / 3060 / 303
Регистрация: 04.12.2011
Сообщений: 8,341
Записей в блоге: 3
16.07.2013, 13:46     Удаление элементов из вектора #11
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;
}
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 14:09     Удаление элементов из вектора #12
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;
}
но почему то не удаляется первая "."
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.07.2013, 14:22     Удаление элементов из вектора #13
Писал прямо тут, так что...
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;
}
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
16.07.2013, 14:31     Удаление элементов из вектора #14
Цитата Сообщение от 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)

soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 14:56     Удаление элементов из вектора #15
я нашёл вот такой erase
C++
1
2
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
erase(pos,count) - где такой?
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.07.2013, 15:04     Удаление элементов из вектора #16
Цитата Сообщение от soican Посмотреть сообщение
erase(pos,count) - где такой?
Удаление элементов из вектора
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.07.2013, 16:59     Удаление элементов из вектора #17
Цитата Сообщение от 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());
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.07.2013, 17:15     Удаление элементов из вектора #18
А зачем вообще переводить std::string в std::vector<char> в данном случае?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.07.2013, 17:18     Удаление элементов из вектора #19
Tulosba, незачем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 17:31     Удаление элементов из вектора
Еще ссылки по теме:

Удаление одинаковых элементов вектора - C++
Здравствуйте. Нужно удалить из вектора одинаковые элементы. Вектор состоит из стрингов и это надо делать без сортировки.

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

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

Удаление одинаковых элементов из вектора <string> - C++
# include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;iterator&gt; # include &lt;string&gt; # include &lt;fstream&gt; # include &lt;cstdio&gt; #...


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

Или воспользуйтесь поиском по форуму:
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 17:31     Удаление элементов из вектора #20
Цитата Сообщение от Tulosba Посмотреть сообщение
А зачем вообще переводить std::string в std::vector<char> в данном случае?
я не знал до этого .erase для string, только для vector
Yandex
Объявления
16.07.2013, 17:31     Удаление элементов из вектора
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru