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

Vector и thread-safe - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как изменить в реестре стартовую страницу Internet Explorer? http://www.cyberforum.ru/cpp-beginners/thread1495049.html
Подскажите пожалуйста как можно с помощью с++ в реестре изменить стартовую страницу Internet Explorer Я написал программу int main(){ HKEY key; PBYTE pbBuff; DWORD cBuff=0; DWORD Type=0; int a = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Internet Explorer\\Main\0"),0,KEY_ALL_ACCESS, &key); RegQueryValueEx(key,TEXT("Start Page"),NULL,NULL,NULL,&cBuff); pbBuff=new...
C++ Условие работает неправильно string getNumberEmployeeEtype(string x, int temp){ /*первым аргументом является строка должности сотрудника, вторым - номер сотрудника*/ cout << "\nВыберите должность сотрудника №" << temp << " (laborer,secretary,manager,accountant,executive,researcher;): "; cin >> x; while ((x != "laborer") || (x != "secretary") || (x != "manager") || (x != "accountant") || (x != "executive") || (x !=... http://www.cyberforum.ru/cpp-beginners/thread1495043.html
Взаимодействие С++ с другими языками C++
Доброго времени суток. Возник такой вопрос, можно ли написать код например для работы с OLE, скажем на Java, и использовать этот код в языке С++, ну может быть DLL или еще как нибудь. Вопрос довольно абстрактный, но все же как С++ может взаимодействовать с другими языками?
Вычислить период колебаний контура по формуле Томпсона C++
Друзья , прошу пожалуйста помочь с написанием кода. нужно произвести расчет по данной формуле T=2pi*√LC (формула для расчета периода эл.тока) L и C задается пользователем.размерность может быть разной , но должна преобразовываться к системе Си. pi=3.14159
C++ Segmentation fault при наследовании класса http://www.cyberforum.ru/cpp-beginners/thread1494981.html
Доброго времени суток! Имею класс Initialise и класс Environment. В первом создаются экземпляры движка и прочие сопутствующие вещи. Потом эти указатели используются в других классах. Соответственно, для их использования в других классах я должен унаследовать Environment от Initialise. Однако, если я это делаю и использую уже другие самостоятельные указатели, то выходит ошибка сегментации...
C++ Ориентированное программирование в С++ Р. Лафоре Доброго времени суток форумчане! Хочу вот закинуть себе книгу "Объектно-ориентированное программирование в С++" на Ipad, да вот только не могу найти эту книгу в формате epub, может у кого-то, что-то найдеться ? Буду безмерно благодарен!!! :drink: подробнее

Показать сообщение отдельно
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.07.2015, 15:05     Vector и thread-safe
Ну так, наверное все зависит от задачи и нужного поведения разрабатываемого класса. Например, у сета нету доступа к элементу по индексу.

Добавлено через 42 секунды
Цитата Сообщение от Ko Посмотреть сообщение
допустим сет плох что он сортирует при добавлении
Есть unordered_set.

Добавлено через 31 минуту
Можно вот так сделать проверку на уникальный элемент в очереди:
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
#include <iostream>
#include <queue>
 
template <typename T>
void print_queue(std::queue<T> qu, std::ostream& os = std::cout)
{
   while (!qu.empty()) {
      os << qu.front() << " ";
      qu.pop();
   }
   os << std::endl;
}
 
template <typename T>
bool has_el(std::queue<T> qu, T &&t)
{
   while (!qu.empty()) {
      if (t == qu.front()) return true;
      qu.pop();
   }
   return false;
}
 
template <typename T>
bool add_unique_el(std::queue<T> &qu, T &&t)
{
   if (has_el(qu, std::forward<T>(t)))
      return false;
   else {
      qu.push(std::forward<T>(t));
      return true;
   }
}
 
int main()
{
   std::queue<int> q{{1,2,3,4,5,6}};
   print_queue(q);
   add_unique_el(q, 8);
   print_queue(q);
}
Добавлено через 4 минуты
В классе, при добавлении проверять:
C++
1
2
3
4
5
6
7
8
9
template <typename T>
bool push(T &&new_value)
{
   std::lock_guard<std::mutex> locker(mut);
   bool is_pushed = this->add_unique_el(std::forward<T>(t));
   
   if (is_pushed) data_cond.notify_one();
   return is_pushed;
}
 
Текущее время: 15:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru