-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
void testing_dot(int N)
{
Vector_type<float> X(N), Y(N);
for (int i = 0; i < N; ++i)
{
X[i] = sin(i);
Y[i] = cos(i);
}
int Ntest = 20;
float taxpyseq = 0.0, t;
const float axpyflop = Ntest*Ntest*N * 3 * 1E-9;
printf("testing sequential ops:\n");
omp_set_num_threads(1);
for (int i = 0; i < Ntest; i++) {
t = omp_get_wtime();
for (int j = 0; j < Ntest; j++) dot(X, Y);
taxpyseq += omp_get_wtime() - t;
}
printf("Sequential ops timing: \n");
printf("dot time=%6.3fs GFLOPS=%6.2f\n", taxpyseq, axpyflop / taxpyseq);
//parallel mode
const int NTR = omp_get_num_procs();
for (int ntr = 2; ntr <= NTR; ntr += 2) {
for (int i = 0; i < N; ++i)
{
X[i] = sin(i);
Y[i] = cos(i);
}
printf("testing parallel ops for ntr=%d:\n", ntr);
omp_set_num_threads(ntr);
float taxpypar = 0.0;
for (int i = 0; i < Ntest; i++) {
t = omp_get_wtime();
for (int j = 0; j < Ntest; j++); dot(X, Y);//действительно небывалое ускорение!!!
taxpypar += omp_get_wtime() - t;
}
printf("dot time=%6.3fs GFLOPS=%6.2f Speedup=%6.2fX \n",
taxpypar, axpyflop / taxpypar, taxpyseq / taxpypar);
}
}
когда ты доказываешь закащику, что твой алгоритм реально лучше...
cat_code,
13 Октября 2018
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
class MyClass
{
public:
MyClass() {};
MyClass(const MyClass & M1) {
MyClass * T = this;
delete this;
T = new MyClass(M1);
}
~MyClass() {};
private:
};
int main(int argc, char *argv[])
{
MyClass A1;
MyClass *B=new MyClass(A1);
}
ОНО РАБОТАЕТ!...вечно правда...НО ПОЧЕМУ ЭТА ТВАРЬ РАБОТАЕТ??? какого можно удалять память... ещё не выделенную... если кто мне объяснит, я буду счастлив (ах да код появился при решении одной забавной задачки, что произойдёт с конструктором копирования при удалении указателя на свой же экземпляр класса)
cat_code,
13 Октября 2018
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
Vector_type(const Vector_type& m1) {
if (this->size != m1.size) {
if (this->size != 0)
destroy_memmory();
this->size = m1.size;
this->M = new m_type[size];
for (int i = 0; i < size; i++)
this->M[i] = m1.M[i];
}
else {
for (int i = 0; i < size; i++)
this->M[i] = m1.M[i];
}
};
Vector_type& operator = (const Vector_type& m1) {
if (this->size != m1.size)
throw "not right =";
this(m1);
return *this;
};
Действительно что могло пойти не так? просто копировать приравнять, копировать, приравнять, копировать...
cat_code,
12 Октября 2018
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
Vector_type(const Vector_type& m1) {
if (this->size != m1.size) {
if (this->size != 0)
destroy_memmory();
this->size = m1.size;
this->M = new m_type[size];
for (int i = 0; i < size; i++)
this->M[i] = m1.M[i];
}
else {
for (int i = 0; i < size; i++)
this->M[i] = m1.M[i];
}
};
Vector_type& operator = (const Vector_type& m1) {
if (this->size != m1.size)
throw "not right =";
for (int i = 0; i < size; i++)
this->M[i] = m1.M[i];
return *this;
};
Действительно что могло пойти не так? просто копировать приравнять, копировать, приравнять, копировать...
cat_code,
12 Октября 2018
-
−2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
string rec(const string str, char c){return str;}
void cer(){}
main(){
string s,d="Text",a;
ifstream fin;
vector<string> mas;
fin.open("test.txt");
//if (fin.is_open()) cout<<"1";else cout<<"0";
while(fin>>s)
{bool f=0;
for(int i=0; i<s.size(); ++i)
if (s[i]==d[0])
{
f=1;
for (int j=0; j<s.size()&&j<d.size(); ++j)
if (d[j]!=s[i+j]) f=0;
if (f)
{
a.clear();
for (int j=0; j<i; ++j)
a=a+s[j];
a=a+"Hi";
for (int j=i; j<s.size(); ++j)
a=a+s[j];
}
}
if (f) {mas.push_back("\n");mas.push_back(a);mas.push_back("\n");}
else mas.push_back(s);
s=rec(s,'0');
}
ofstream fout;
fout.open("output.txt");
for (int i=0; i<mas.size(); ++i) fout<<mas[i]<<"\t";
}
ДД всем просветленным.
Есть код на С++ , который нормально компилируется и меняет текст в указанном файле. Вопрос: как его использовать для изменения данных при парсинге сайта. По логике Tokenizer передает лексемы в Parser для дальнейшего построения DOM. Значит надо добавить подобный код в Tokenizer, чтобы он передавал уже исправленные данные. Но на практике Tokenizer работает с Buffer(nsHtml5Tokenizer::tokenizeBuffer( nsHtml5UTF16Buffer* buffer)), причем с логическим(bool), а код для строчки из файла.
Как вариант добавить в сам Parser(nsHtml5Parser::Parse(const nsAString& aSourceBuffer, void* aKey, const nsACString& ContentType, bool aLastCall, nsDTDMode aMode) , но не могу разобраться как это сделать.
При компиляции вылетает куча ошибок.
Использованные файлы: nsHtml5Parser.cpp и nsHtml5Tokenizer.cpp, FireFox(версия 47), компилятор MSVS2013.
DrAli,
12 Октября 2018
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
std::size_t fib(const std::size_t index) {
if (index < 3)
return !!index;
std::size_t f2 = 1; // f(n - 2)
std::size_t f1 = 1; // f(n - 1)
std::size_t result = 0;
for (std::size_t i = 2; i < index; ++i)
{
result = f1 + f2;
f1 = f2;
f2 = result;
}
return result;
}
Что Clang вытворяет с несчастной функцией Фибоначчи?
https://godbolt.org/z/2SFUm0
Elvenfighter,
10 Октября 2018
-
−2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
int** delete_row(int** arr, int &row_count, int n)
{
delete arr[n-1];
for (int i = n-1; i < row_count-1; i++)
{
arr[i] = arr[i+1];
}
arr[row_count-1] = NULL;
delete arr[row_count-1];
row_count--;
return arr;
}
dumiv,
09 Октября 2018
-
−10
- 1
https://i.imgur.com/2GTA40l.png
j123123,
07 Октября 2018
-
−9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
BOOL ShaderElement::equal(ShaderElement* S)
{
if (nullptr == S && nullptr == this)
return TRUE;
if (nullptr == S || nullptr == this)
return FALSE;
return equal(*S);
}
https://www.linux.org.ru/forum/development/14512625
Elvenfighter,
05 Октября 2018
-
−3
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
#define m_from(format) \
char buff[128]; \
sprintf(buff, format, value); \
data_ = std::string(buff);
inline void fromShort(short value)
{
m_from("%i");
}
inline void fromInt(int value)
{
m_from("%i");
}
inline void fromLong(long value)
{
m_from("%li");
}
inline void fromFloat(float value)
{
m_from("%f");
}
inline void fromDouble(double value)
{
m_from("%f");
}
https://github.com/FlightBlaze/Newtoo/blob/master/modules/misc/USVString.h
Собственно, занесения в аналы ГК достоин весь этот класс целиком.
gost,
01 Октября 2018