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

Не могу разобраться в функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создайте структуру Array (Найти ошибку) http://www.cyberforum.ru/cpp-beginners/thread741379.html
Задание : Создайте структуру Array с двумя полями: указатель на массив целых чисел и размер массива. В структуре хранится только указатель на массив, сами данные хранятся в динамической области памяти, выделенной оператором new. Напишите функции: 1. CreateArray, которая принимает 1 параметр (размер массива), выделяет память под массив и возвращает переменную типа Array. 2. FillArray, которая...
C++ Ввести с клавиатуры слово и символ. Заменить в слове последнюю букву “A” на символ. Присоединить введенный символ к концу слова. Вывести слово и си Помогите разобраться, пожалуйста. Задание:Ввести с клавиатуры слово и символ. Заменить в слове последнюю букву “A” на символ. Присоединить введенный символ к концу слова. Вывести слово и символ. При компиляции вылезает ошибка: error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа. Как избавиться от этой ошибки?Да и в целом правильно ли я... http://www.cyberforum.ru/cpp-beginners/thread741378.html
классы двумерные массивы (сделать с помощью классов) C++
#include <stdio.h> #include <conio.h> #include <time.h> void vvod (float x, int k, int l); void vivod (float x, int k, int l); void obrabotka (float x, int k, int l); void main () {
В динамических массивах удалять нулевые строки/столбцы из матрицы (Ошибка в коде) C++
Здравствуйте! По заданию программа должна в динамических массивах удалять нулевые строки/столбцы из матрицы, введённой с разной длиной строк. При выводе ответа в полученную матрицу записываются какие-то непонятные значения с несколькими знаками. Так же если вводить две подряд нулевые строки, то в ответе будет записана одна из них. Как реализовать код программы по условию задания? Скажите,где...
C++ Периметр треугольника вписанного в окружность http://www.cyberforum.ru/cpp-beginners/thread741361.html
Найти периметр стороннего треугольника вписанного в окружность с радиусом. R вводится с клавиатуры
C++ пом0гите разобраться с ошибкой expected identifier before '(' token expected `;' before '(' token вот код #include <iostream> using namespace std; int main(){ int a,b,c; cin >> a; подробнее

Показать сообщение отдельно
Вовастый
3 / 3 / 0
Регистрация: 03.09.2010
Сообщений: 11
21.12.2012, 22:20     Не могу разобраться в функции
Функция filter() ищет элементы в исходном контейнере, значения которых соответствуют условию (значению), переданному в функцию при ее вызове, потом копирует найденные значения элементов в целевой контейнер.
Беда в том, что если копировать элементы с исходного контейнера в целевой посредством присваивания, программа работает, но при этом нужно объявлять вектор и указывать его размер, а так как размер вектора может превышать реальное количество элементов в нем, логичным выглядит копирование посредством вставки нового элемента в контейнер баз объявленного размера, но тут у меня возникли трудности и мне срочно нужна подсказка, так как сам я это пока не осилю. Заранее спасибо.

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
 
using namespace std;
 
//шаблон функции filter 
template <typename InputIterator, typename OutputIterator,
              typename ElemType, typename Comp>
OutputIterator filter(InputIterator first, OutputIterator last,
               OutputIterator at, const ElemType &val, Comp pred)
{
    while((first = find_if(first, last, bind2nd(pred, val))) != last)
    {
         cout << "найдено: " << *first << endl;
         *at++ = *first++;
    }
    return at;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Rus");
 
    const int elem_size = 8;
 
    int ia[elem_size] = {12, 8, 43, 0, 6, 21, 3, 7};
    vector<int> ivec(ia, ia+elem_size);
 
    int ia2[elem_size];
    //не задаю размер вектора, так как буду использовать вставку элементов вместо присваивания...
    vector<int> ivec2;
 
    cout << "отфильтровываю из массива числа меньше 8\n";
    filter(ia, ia+elem_size, ia2, elem_size, less<int>());
 
    cout << "отфильтровываю из массива числа больше 8)\n";
    //...но к сожалению функция не работает со вставкой
    filter(ivec.begin(), ivec.end(), back_inserter(ivec2), elem_size, greater<int>());
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru