本文整理汇总了C++中QVector::swap方法的典型用法代码示例。如果您正苦于以下问题:C++ QVector::swap方法的具体用法?C++ QVector::swap怎么用?C++ QVector::swap使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QVector
的用法示例。
在下文中一共展示了QVector::swap方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: razor_CH
void QCanvas::razor_CH(QVector<QCanvas::line_t> razor, QVector<QPointF> &poly, bool time_sleep)
{
for(size_t i = 0; i<razor.size(); ++i)
{
QVector<QPointF> tmp;
for(size_t j = 0; j< poly.size(); ++j)
{
QPointF S = poly.value(j);
QPointF F = poly.value((j+1) % poly.size());
size_t flag = Intersection(S,F,razor.value(i).S,razor.value(i).F);
while(flag)
switch (flag) {
case 1:
{
flag = 0;
continue;
}
case 2:
{
QPointF add = LinesCross(S,F,razor.value(i).S,razor.value(i).F);
if (add == F)
{
flag = 3;
continue;
}
tmp.push_back(add);
tmp.push_back(F);
flag = 0;
continue;
}
case 3:
{
tmp.push_back(F);
flag = 0;
continue;
}
case 4:
{
QPointF add = LinesCross(S,F,razor.value(i).S,razor.value(i).F);
if (add == F)
{
flag = 3;
continue;
}
tmp.push_back(add);
flag = 0;
continue;
}
}
}
poly.swap(tmp);
}
}
示例2:
QVector<double> KolmogorovZurbenko::kz1d(int iterations)
{
QVector<double> *tmp = new QVector<double>(y);
QVector<double> *ans = new QVector<double>(y.size());
ans->fill(0.0);
for(int i = 0; i < iterations; i++){
for(int yi = 0; yi < y.size(); yi++){
ans->operator [](yi) = mavg1d(*tmp, yi, WINDOW);
}
ans->swap(*tmp);
}
return *ans;
}
示例3: differenced
QVector<double> KolmogorovZurbenko::kza1d(int window, int iterations, int minimumWindowLength, double tolerance)
{
int n,q;
long qh, qt;
double m;
n = y.size();
QVector<double> *d = new QVector<double>(n);
QVector<double> *prime = new QVector<double>(n);
QVector<double> *ans = new QVector<double>(n);
QVector<double> *tmp = new QVector<double>(y);
q = window;
differenced(d, prime, q);
m = *std::max_element(std::begin(*d), std::end(*d));
for(int i = 0; i < iterations; i++){
#pragma omp parallel for
for(int t = 0; t < n; t++){
if(abs(prime->at(t)) < tolerance){
qh = (int) floor(q*adaptive(d->at(t), m));
qt = (int) floor(q*adaptive(d->at(t), m));
} else if (abs(prime->at(t)) < 0){
qh = q;
qt = (int) floor(q*adaptive(d->at(t), m));
} else {
qh = (int) floor(q*adaptive(d->at(t), m));
qt = q;
}
qt = (qt < minimumWindowLength) ? minimumWindowLength : qt;
qh = (qh < minimumWindowLength) ? minimumWindowLength : qh;
qh = (qh > n-t-1) ? n-t-1 : qh;
qt = (qt > t) ? t : qt;
ans->operator [](t) = mavga1d(*tmp, t-qt, t+qh+1);
}
ans->swap(*tmp);
}
return *ans;
}
示例4: levenshteinDistance
int QgsStringUtils::levenshteinDistance( const QString& string1, const QString& string2, bool caseSensitive )
{
int length1 = string1.length();
int length2 = string2.length();
//empty strings? solution is trivial...
if ( string1.isEmpty() )
{
return length2;
}
else if ( string2.isEmpty() )
{
return length1;
}
//handle case sensitive flag (or not)
QString s1( caseSensitive ? string1 : string1.toLower() );
QString s2( caseSensitive ? string2 : string2.toLower() );
const QChar* s1Char = s1.constData();
const QChar* s2Char = s2.constData();
//strip out any common prefix
int commonPrefixLen = 0;
while ( length1 > 0 && length2 > 0 && *s1Char == *s2Char )
{
commonPrefixLen++;
length1--;
length2--;
s1Char++;
s2Char++;
}
//strip out any common suffix
while ( length1 > 0 && length2 > 0 && s1.at( commonPrefixLen + length1 - 1 ) == s2.at( commonPrefixLen + length2 - 1 ) )
{
length1--;
length2--;
}
//fully checked either string? if so, the answer is easy...
if ( length1 == 0 )
{
return length2;
}
else if ( length2 == 0 )
{
return length1;
}
//ensure the inner loop is longer
if ( length1 > length2 )
{
qSwap( s1, s2 );
qSwap( length1, length2 );
}
//levenshtein algorithm begins here
QVector< int > col;
col.fill( 0, length2 + 1 );
QVector< int > prevCol;
prevCol.reserve( length2 + 1 );
for ( int i = 0; i < length2 + 1; ++i )
{
prevCol << i;
}
const QChar* s2start = s2Char;
for ( int i = 0; i < length1; ++i )
{
col[0] = i + 1;
s2Char = s2start;
for ( int j = 0; j < length2; ++j )
{
col[j + 1] = qMin( qMin( 1 + col[j], 1 + prevCol[1 + j] ), prevCol[j] + (( *s1Char == *s2Char ) ? 0 : 1 ) );
s2Char++;
}
col.swap( prevCol );
s1Char++;
}
return prevCol[length2];
}