Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
15 / 15 / 0
Регистрация: 18.11.2010
Сообщений: 122

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

24.03.2011, 23:39. Показов 1189. Ответов 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;
 
На Си такая запись прокатит в незаполненом массиве,как правильно записать с помощью СТЛ
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2011, 23:39
Ответы с готовыми решениями:

Как элегантно проверить, содержится ли строка в списке?
завести какой-нибудь хэш строк? как это java-люди стандартно делают? имеется заранее определенный набор строк, например: слива ...

Собрание библиотек (STL, Boost и пр.) или ручками писать?
Здравствуйте, у меня возник такой вопрос - что более эффективнее использовать: Собрание библиотек (STL, Boost и пр.) или ручками...

Как писать код
При написании кода в теле процедуры пишутся английские слова после Private Sub типа Form1.ForeColor = &amp;HFF&amp;, Form1.Font.Size = 18,...

6
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.03.2011, 23:44
Модно как-то так
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;
}
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
24.03.2011, 23:56
или..
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;
}
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
25.03.2011, 00:13
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;
   });
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
25.03.2011, 06:53
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;
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
25.03.2011, 17:16
1.
C++
1
std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
25.03.2011, 17:48
Я не большой специалист по Си++, но не понимаю, почему такие сложные наовроты на простые вопросты:

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;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2011, 17:48
Помогаю со студенческими работами здесь

Как писать красивый код?
Здравствуйте, написал код для 5 свойств контрола и смотрю как то так громаздко на экране. Вот думаю, так это только начал а что если...

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

Как писать красивый код?
Добрый день! В python есть хороший свод рекомендаций по написанию кода PEP-8 (мб кто слышал). Есть ли аналогичное для C#, тип...

Как непрограммно писать код?
Как к примеру сделать так: прога, в ней текстовое поле, я туду вписываю когда прога запущена тект: (if 5&lt;6 then msgbox 'Hi') Я...

Как писать mbr код?
Хочу написать значит прогу которая будет дропить мой .bin файл с mbr кодом в систему, планирую сделать mbr для лечение от вирей, удаление...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru