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

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

Войти
Регистрация
Восстановить пароль
 
Santer.Net
15 / 15 / 1
Регистрация: 18.11.2010
Сообщений: 122
#1

как элегантно писать код STL - C++

24.03.2011, 23:39. Просмотров 597. Ответов 6
Метки нет (Все метки)

Здравствуйте. Подскажите как правильнои оптимально
записать следущие частички кода с использованием СТЛ
Скажем,в качестве массив используем вектор vec в качестве обычного a

1)Считать элементи с потока
C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<N;i++)
cin>>a[i];
Как записать правильней с помощью СТЛ
int inp;
for(int i=0;i<N;i++)
{
cin>>inp;
vec.pusg_back(inp);
}
2)Присвоить элемент
C++
1
2
3
4
5
6
int* a;
*(a+3)=1;
*(a+0)=434343;
*(a+1)=4343;
 
На Си такая запись прокатит в незаполненом массиве,как правильно записать с помощью СТЛ
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 23:39     как элегантно писать код STL
Посмотрите здесь:

Как грамотней писать код? - C++
Добрый день. 1. Как правильней перебирать контейнер (карта, хеш, список...) - обычным for(int = 0;...) или с использованием итераторов? ...

Как писать код по стандарту - C++
Извините, что создал тему скорей всего в неподходящей ветке. Но все же. Где-то читал (к сожалению не помню где) как нужно писать код по...

Переписать готовую функцию более элегантно - C++
Мое понимание элегантной функции: записано наиболее коротко, понятно, ничего лишнего, работает наиболее оптимальным образом не в ущерб...

Начать писать код на c++ - C++
Друзья, день добрый. Я так понимаю что на чистом с++ мало людей нынче пишут и это ( в какой-то степени ) не актуально? все пишут на...

Поясните за код (листинг из Мюссера : Справочное руководство по STL) - C++
Добрый день. Вот код : // Demonstrating STL vector constructors with a user-defined // type and showing copying explicitly ...

Где можно найти код реализации библиотеки STL - C++
Вот хочу я, например, проверить, функция std::swap() делает ли проверку на попытку обмена объекта с самим собой. Как/где я могу...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 23:44     как элегантно писать код STL #2
Модно как-то так
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 <vector>
#include <algorithm>
 
int main(){
  std::vector<int> vec;
  const size_t N = 5;
  vec.resize(N);
  struct Func{
    int operator() (){
      int temp;
      std::cin >> temp;
      return temp;
    }
    void operator() (int a){
      std::cout << a << ' ';
    }
  };
  std::generate_n(vec.begin(), N, Func());
  std::for_each(vec.begin(), vec.end(), Func());
  return 0;
}
ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
24.03.2011, 23:56     как элегантно писать код STL #3
или..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <vector>
#include <iostream>
#include <algorithm>
 
 
int main(){
    std::vector<int> d;
 
    std::cout << "Enter a sequence of integers (eof to quit): " ;
    std::copy(std::istream_iterator<int>(std::cin),
          std::istream_iterator<int>(), std::inserter(d,d.begin()));
 
    std::copy(d.begin(),d.end(),std::ostream_iterator<int>(std::cout,"\n"));
 
    return 0;
}
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
25.03.2011, 00:13     как элегантно писать код STL #4
C++
1
2
3
4
   std::vector<int> some_list(10);
   std::for_each(some_list.begin(), some_list.end(), [](int &x) {
     std::cin >> x;
   });
Mr.X
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.03.2011, 06:53     как элегантно писать код STL #5
2)
C++
1
2
3
4
5
6
7
std::vector<int>  v;
size_t  pos = 0;
if(pos >= v.size())//Если вы уверены в ложности этого условия, то проверку можно не делать.
{
    v.resize((pos + 1) * 2);
}
v[pos] = 5;
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
25.03.2011, 17:16     как элегантно писать код STL #6
1.
C++
1
std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2011, 17:48     как элегантно писать код STL
Еще ссылки по теме:

Код класса большие числа из книги Л.Аммерааля Stl для программистов - C++
Здравствуйте, не у кого нет кода класса большое число из книги Л.Аммерааля Stl для программистов Заранее спасибо!

Как лучше учиться: писать консольные приложения или оконные? И если писать оконные, то на чём лучше? - C++
На днях я узнал про Borland c++ builder и хочу воспользоваться им, но можно и писать код, что-бы было оконное приложение, так что-же лучше?...

Class для работы с дробными числами. Объяснить ( код писать не нужно ) - C++
Class для работы с дробными числами. Число должно быть представлено двумя полями: целая часть - целое со знаком, дробная часть - целое без...

Можно ли писать такой код,мне в дальнейшем надо будет наследовать x и y, а другие два елемента нет - C++
сlass A { private: int a; public int x; A() { x=0; }


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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17462 / 5700 / 361
Регистрация: 30.03.2009
Сообщений: 15,639
Записей в блоге: 26
25.03.2011, 17:48     как элегантно писать код STL #7
Я не большой специалист по Си++, но не понимаю, почему такие сложные наовроты на простые вопросты:

1. Вместо "Как записать правильней с помощью СТЛ" должен быть подставлен код
C++
1
2
std::vector<int> vec;
vec.resize (10);
2. На Си такая запись прокатит в незаполненом массиве,как правильно записать с помощью СТЛ.

В твоём тесту у тебя указатель a не инициализирован. Если подразумевается, что у тебя всё-таки нормально проинициализированный вектор, то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// используем ссылку вместо указателя, чтобы не было возможности использовать
// неинициализировнную память. В правой части присваивания подразумеваем
// некий объект-vector, который ещё незаполнен (т.е. в нём 0 элементов)
std::vector<int> &a = ....;
 
// В исходном примере максимальный индекс - это 3, а потому нам надо выделить
// как минимум 4 элемента в массиве
a.resize (4);
 
// Заполняем элементы
a[3] = 1;
a[0] = 434343;
a[1] = 4343;
Yandex
Объявления
25.03.2011, 17:48     как элегантно писать код STL
Ответ Создать тему
Опции темы

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