Ex9 feedback: missed the fourth assignment
This commit is contained in:
parent
6d63474276
commit
70f6134222
1 changed files with 82 additions and 0 deletions
82
ex9.1/d.cpp
Normal file
82
ex9.1/d.cpp
Normal file
|
@ -0,0 +1,82 @@
|
|||
#include <thread>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
|
||||
/*
|
||||
* Compile with 'g++ -pthread a.cpp'
|
||||
*
|
||||
* Modifying an object
|
||||
*/
|
||||
|
||||
using namespace std;
|
||||
|
||||
/*
|
||||
* This method will push the addition of the last two elements on the vector.
|
||||
*/
|
||||
void manipulate(vector<double>& v) {
|
||||
int sleep = 2;
|
||||
for ( int i = 0; i < 5; i++ )
|
||||
{
|
||||
double a = 0;
|
||||
|
||||
// Only use the last two elements
|
||||
int j = 0;
|
||||
for ( auto rit = v.rbegin() ; rit != v.rend(); ++rit )
|
||||
{
|
||||
if ( j > 1 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
a += *rit;
|
||||
++j;
|
||||
}
|
||||
|
||||
v.push_back( a);
|
||||
std::cout << "Updated Vector" << std::endl;
|
||||
|
||||
this_thread::sleep_for(std::chrono::seconds(sleep));
|
||||
}
|
||||
}
|
||||
|
||||
void display(vector<double>& v) {
|
||||
int sleep = 1;
|
||||
for ( int i = 0; i < 10; i++ )
|
||||
{
|
||||
std::cout << "Vector is now:" << std::endl;
|
||||
|
||||
std::cout << "{";
|
||||
for ( int i = 0; i < v.size() ; i++ ) {
|
||||
std::cout << v[i] << ", ";
|
||||
}
|
||||
std::cout << "}" << std::endl;
|
||||
this_thread::sleep_for(std::chrono::seconds(sleep));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
struct my_f {
|
||||
vector<double>& v;
|
||||
|
||||
my_f(vector<double>& vv): v(vv) {};
|
||||
void my_function() { manipulate(v); };
|
||||
};
|
||||
|
||||
int main() {
|
||||
|
||||
vector<double> v { 1.1, 1.1 };
|
||||
thread t {display, ref(v)};
|
||||
|
||||
my_f f{v};
|
||||
thread t2( &my_f::my_function, std::ref(f) );
|
||||
|
||||
|
||||
// Run the threads
|
||||
t.join();
|
||||
t2.join();
|
||||
|
||||
return 0;
|
||||
}
|
Reference in a new issue