Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Функция dubplicate_elements().

Posted on 10 мая, 201311 мая, 2013 by admin

Кратко опишите возможное поведение функции dublicate_elements() из параграфа 16.3.6 для vector<string>, состоящего из трех элементов: don’t do this (не делай этого).

Ну что ж господа! Сейчас я вам приведу пример этой функции, сам код этой функции и мы поговорим по поводу этой строки.

Сам код функции dublicate_elements():

1
2
3
4
5
void duplicate_elements(vector<string>& f)
{
for(vector<string>::iterator p=f.begin();p!=f.end();++p)
f.insert(p,*p);//Не надо!
}

Глядя на эту функцию можно предположить, что здесь будет бесконечный цикл. Ну как бы не выйдет из цикла функция, потому что элемент будет вставлять первый элемент перед первым но после двух остальных и вообщем будет как бы бесконечный цикл. Щас попробуем это смоделировать. Ну что ж вообщем я протестил вот код:

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
26
27
28
29
30
//testirovanie fynkcii duplicate_elements();
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <string>
using std::string;
 
void duplicate_elements(vector<string>& f)
{
for(vector<string>::iterator p=f.begin();p!=f.end();++p)
f.insert(p,*p);//Не надо!
}
 
int main()
{
cout <<"Mu v fynkcii!"<<endl;
vector<string> vec(3);
vec[0]="don't";
vec[1]="do";
vec[2]="this";
for(int i=0;i<3;i++)
cout <<vec[i]<<' ';
cout <<endl;
 
duplicate_elements(vec);//vulazit owibka koroche
 
return 0;
}

Короче вылазит ошибка, я даже не пойму что за ошибка. Как бы бесконечного цикла не получилось, просто выкинуло окошко Debug Error! Отакая от фигня. Так вообщем нельзя делать. Да плохо что я даже не понял в чом ошибка, но щас попытаюсь разобраться все таки.

Тока еще потестил и разобрался я так думаю просто недействительный *p оказывается потому, что если я туда добавляю какую нибудь строку, то ошибки не происходит, ошибка то происходит но я присваиваю итератор ей и нету ошибки, а есть зацикливание.

Ладно я думаю разобрались. Так делать нельзя.

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • uncategorized (2)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (35)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant