本文整理汇总了C++中std::multiset::insert方法的典型用法代码示例。如果您正苦于以下问题:C++ multiset::insert方法的具体用法?C++ multiset::insert怎么用?C++ multiset::insert使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类std::multiset
的用法示例。
在下文中一共展示了multiset::insert方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SortTree
void Comparer::SortTree(Node *p, std::multiset<Node *, NCompare> &setNodes)
{
std::vector<Node *> temp;
setNodes.insert(p);
temp = p->getChildren();
for (auto node : temp)
{
SortTree(node, setNodes);
}
temp.clear();
}
开发者ID:DavidNingGithub,项目名称:Performance-Assessment-Framework-of-Remote-Server,代码行数:11,代码来源:Comparer.cpp
示例2:
inline std::multiset<T>& operator>> (object o, std::multiset<T>& v)
{
if(o.type != type::ARRAY) { throw type_error(); }
object* p = o.via.array.ptr + o.via.array.size;
object* const pbegin = o.via.array.ptr;
while(p > pbegin) {
--p;
v.insert(p->as<T>());
}
return v;
}
示例3: SweepControllerPath
int plPXPhysicalControllerCore::SweepControllerPath(const hsPoint3& startPos, const hsPoint3& endPos, hsBool vsDynamics, hsBool vsStatics,
uint32_t& vsSimGroups, std::multiset< plControllerSweepRecord >& WhatWasHitOut)
{
NxCapsule tempCap;
tempCap.p0 =plPXConvert::Point( startPos);
tempCap.p0.z = tempCap.p0.z + fPreferedRadius;
tempCap.radius = fPreferedRadius ;
tempCap.p1 = tempCap.p0;
tempCap.p1.z = tempCap.p1.z + fPreferedHeight;
NxVec3 vec;
vec.x = endPos.fX - startPos.fX;
vec.y = endPos.fY - startPos.fY;
vec.z = endPos.fZ - startPos.fZ;
int numberofHits = 0;
int HitsReturned = 0;
WhatWasHitOut.clear();
NxScene *myscene = plSimulationMgr::GetInstance()->GetScene(fWorldKey);
NxSweepQueryHit whatdidIhit[10];
unsigned int flags = NX_SF_ALL_HITS;
if(vsDynamics)
flags |= NX_SF_DYNAMICS;
if(vsStatics)
flags |= NX_SF_STATICS;
numberofHits = myscene->linearCapsuleSweep(tempCap, vec, flags, nil, 10, whatdidIhit, nil, vsSimGroups);
if(numberofHits)
{//we hit a dynamic object lets make sure it is not animatable
for(int i=0; i<numberofHits; i++)
{
plControllerSweepRecord CurrentHit;
CurrentHit.ObjHit=(plPhysical*)whatdidIhit[i].hitShape->getActor().userData;
CurrentHit.Norm.fX = whatdidIhit[i].normal.x;
CurrentHit.Norm.fY = whatdidIhit[i].normal.y;
CurrentHit.Norm.fZ = whatdidIhit[i].normal.z;
if(CurrentHit.ObjHit != nil)
{
hsPoint3 where;
where.fX = whatdidIhit[i].point.x;
where.fY = whatdidIhit[i].point.y;
where.fZ = whatdidIhit[i].point.z;
CurrentHit.locHit = where;
CurrentHit.TimeHit = whatdidIhit[i].t ;
WhatWasHitOut.insert(CurrentHit);
HitsReturned++;
}
}
}
return HitsReturned;
}
示例4: SortVertexAdjacents
void ExtremalQuery3BSP<Real>::CreateSphericalBisectors (BasicMesh& mesh,
std::multiset<SphericalArc>& arcs)
{
// For each vertex, sort the normals into a counterclockwise spherical
// polygon when viewed from outside the sphere.
SortVertexAdjacents(mesh);
int numVertices = mesh.GetNumVertices();
const BasicMesh::Vertex* vertices = mesh.GetVertices();
std::queue<std::pair<int,int> > queue;
for (int i = 0; i < numVertices; ++i)
{
const BasicMesh::Vertex& vertex = vertices[i];
queue.push(std::make_pair(0, vertex.NumTriangles));
while (!queue.empty())
{
std::pair<int,int> arc = queue.front();
queue.pop();
int i0 = arc.first, i1 = arc.second;
int separation = i1 - i0;
if (separation > 1 && separation != vertex.NumTriangles - 1)
{
if (i1 < vertex.NumTriangles)
{
SphericalArc arc;
arc.NIndex[0] = vertex.T[i0];
arc.NIndex[1] = vertex.T[i1];
arc.Separation = separation;
arc.Normal = mFaceNormals[arc.NIndex[0]].Cross(
mFaceNormals[arc.NIndex[1]]);
arc.PosVertex = i;
arc.NegVertex = i;
arcs.insert(arc);
}
int iMid = (i0 + i1 + 1)/2;
if (iMid != i1)
{
queue.push(std::make_pair(i0, iMid));
queue.push(std::make_pair(iMid, i1));
}
}
}
}
}
示例5: main
int main(){
// read input
scanf("%d",&N);
for(int i=0;i<N;++i)
scanf("%lld%lld",&P[i].x,&P[i].y);
// sort points by x-coordinate
std::sort(P,P+N);
for(int i=0,j=0;i<N;++i){
while(j<i&&P[i].x-P[j].x>ans)
// these points should not be considered
// so remove them from the active set
bbst.erase(bbst.lower_bound(P[j++]));
for(auto x=bbst.lower_bound(pnt(P[i].x-ans,P[i].y-ans));x!=bbst.end()&&x->y<=P[i].y+ans;++x)
// this algorithm looks like it should take O(N^2), but the number of iterations is actually constant
ans=std::min(ans,dist(P[i],*x));
// insert into the active set
bbst.insert(P[i]);
}
printf("%lld\n",ans);
}
示例6: preserve
virtual int preserve(int sid)
{
#ifdef DEBUG
std::clog << "preserve" << std::endl;
#endif
if (preserveCnt >= MAX_RUN) return -1;
pthread_mutex_lock(&cntLock);
preserveCnt++;
pthread_mutex_unlock(&cntLock);
int exitCode;
pid_t child = fork();
if (!child)
{
if (webServer=="127.0.0.1" || webServer=="localhost") exit(0);
std::ostringstream s;
s << "mkdir -p " << sourcePath << '/' << sid/10000;
system(s.str().c_str());
s.str("");
s << "rsync -e 'ssh -c arcfour' -rz -W --del " << webServer << ":" << sourcePath << '/' << sid/10000 << '/' << sid%10000 << ' ' << sourcePath << '/' << sid/10000;
int exitCode=system(s.str().c_str());
if (!WIFEXITED(exitCode))
syslog(LOG_ERR, "failed to run rsync");
exit(WEXITSTATUS(exitCode));
}
waitpid(child,&exitCode,0);
if (!WIFEXITED(exitCode)||WEXITSTATUS(exitCode))
{
pthread_mutex_lock(&cntLock);
preserveCnt--;
pthread_mutex_unlock(&cntLock);
return -1;
}
int ret;
pthread_mutex_lock(&cntLock);
ret = rand();
boardingPass.insert(ret);
pthread_mutex_unlock(&cntLock);
return ret;
}
示例7: assertion
void ExtremalQuery3BSP<Real>::CreateSphericalArcs (BasicMesh& mesh,
std::multiset<SphericalArc>& arcs)
{
int numEdges = mesh.GetNumEdges();
const BasicMesh::Edge* edges = mesh.GetEdges();
const BasicMesh::Triangle* triangles = mesh.GetTriangles();
const int prev[3] = { 2, 0, 1 };
const int next[3] = { 1, 2, 0 };
for (int i = 0; i < numEdges; ++i)
{
const BasicMesh::Edge& edge = edges[i];
SphericalArc arc;
arc.NIndex[0] = edge.T[0];
arc.NIndex[1] = edge.T[1];
arc.Separation = 1;
arc.Normal = mFaceNormals[arc.NIndex[0]].Cross(
mFaceNormals[arc.NIndex[1]]);
const BasicMesh::Triangle& adj = triangles[edge.T[0]];
int j;
for (j = 0; j < 3; ++j)
{
if (adj.V[j] != edge.V[0]
&& adj.V[j] != edge.V[1])
{
arc.PosVertex = adj.V[prev[j]];
arc.NegVertex = adj.V[next[j]];
break;
}
}
assertion(j < 3, "Unexpected condition\n");
arcs.insert(arc);
}
CreateSphericalBisectors(mesh, arcs);
}
示例8: UpdateNeighbours
void ExpMapGenerator::UpdateNeighbours( ExpMapParticle * pParticle, std::multiset< ParticleQueueWrapper > & pq )
{
// iterate through neighbours, updating particle distances and pushing onto pq
ExpMapParticle::ListEntry * pCur = GetNeighbourList( pParticle );
if ( pCur == NULL ) lgBreakToDebugger();
while ( pCur != NULL ) {
ExpMapParticle * pCurParticle = pCur->pParticle;
pCur = pCur->pNext;
// skip inactive particles
if ( pCurParticle->State() == ExpMapParticle::Frozen )
continue;
// set active state
pCurParticle->State() = ExpMapParticle::Active;
// compute new distance
float fDistToPoint = (pParticle->Position() - pCurParticle->Position()).Length();
float fSurfDist = fDistToPoint + pParticle->SurfaceDistance();
// update particle distance and/or nearest particle
bool bUpdated = false;
if ( fSurfDist < pCurParticle->SurfaceDistance() ) {
pCurParticle->SetNearestParticle( pParticle );
pCurParticle->SurfaceDistance() = fSurfDist;
bUpdated = true;
}
if ( pCurParticle->SurfaceDistance() < std::numeric_limits<float>::max() && pCurParticle->NearestParticle() == NULL )
lgBreakToDebugger();
// re-insert particle into priority queue
pq.insert( ParticleQueueWrapper(pCurParticle) );
}
}
示例9: decompileRange
//.........这里部分代码省略.........
{
FuncExpr *f = dynamic_cast<FuncExpr *>(stk->top());
if (f == NULL) {
*os << indent_str
<< "error: closure requires a function\n";
}
stk->pop();
f->num_upvals = aux;
f->upvals = new Expression*[aux];
for (int i = aux - 1; i >= 0; i--) {
f->upvals[i] = stk->top(); stk->pop();
}
stk->push(f);
}
break;
case CALLFUNC:
aux = *start++;
goto callfunc;
case CALLFUNC0:
case CALLFUNC1:
aux = opc - CALLFUNC0;
callfunc:
{
int num_args = *start++;
FuncCallExpr *e = new FuncCallExpr(start);
e->num_args = num_args;
e->args = new Expression*[num_args];
for (int i = num_args - 1; i >= 0; i--) {
e->args[i] = stk->top();
stk->pop();
}
e->func = stk->top();
stk->pop();
if (aux == 0) {
*os << indent_str << *e << std::endl;
delete e;
}
else if (aux == 1 || aux == 255) // 255 for return f()
stk->push(e);
else {
stk->push(e);
for (int i = 1; i < aux; i++)
stk->push(new VarExpr(start, "<extra result>"));
}
}
break;
case RETCODE:
{
int num_rets = stk->size() + tf->code[1] - *start++;
ExprStack rets;
for (int i = 0; i < num_rets; i++) {
rets.push(stk->top());
stk->pop();
}
*os << indent_str << "return";
for (int i = 0; i < num_rets; i++) {
*os << " " << *rets.top();
delete rets.top();
rets.pop();
if (i + 1 < num_rets)
*os << ",";
}
*os << std::endl;
}
break;
case SETLINE:
aux = *start++;
goto setline;
case SETLINEW:
aux = start[0] | (start[1] << 8);
start += 2;
setline:
break; // ignore line info
case POP:
aux = *start++;
goto pop;
case POP0:
case POP1:
aux = opc - POP0;
pop:
for (int i = 0; i <= aux; i++) {
local_var_defs->insert(stk->top()->pos);
delete stk->top(); stk->pop();
}
break;
//Nop
default:
break;
}
}
}
示例10: record_sim
void record_sim(int i)
{
std::deque<str_and_Bond>::iterator iter;
double temp_x;
double temp_y;
double temp_r_sq;
for(iter=growth.begin(); iter!=growth.end(); iter++)
{
temp_x = iter->second.second.first;
temp_y = iter->second.second.second;
temp_r_sq = temp_x*temp_x+temp_y*temp_y;
r_squared_array.insert(temp_r_sq);
}
long int count = 0;
std::multiset<long long int>::iterator iter2 = r_squared_array.begin();
for(int j=0; j<num_r_values; j++)
{
while(count<growth.size() && *iter2 < r[j]*r[j])
{
count++;
iter2++;
}
M_array[i][j] = count;
}
for(iter=removed.begin(); iter!=removed.end(); iter++)
{
temp_x = iter->second.second.first;
temp_y = iter->second.second.second;
temp_r_sq = temp_x*temp_x+temp_y*temp_y;
r_squared_array.insert(temp_r_sq);
}
count = 0;
iter2 = r_squared_array.begin();
for(int j=0; j<num_r_values; j++)
{
while(count<growth.size() + removed.size() && *iter2 < r[j]*r[j])
{
count++;
iter2++;
}
Both_array[i][j] = count;
}
r_squared_array.clear();
for(iter=removed.begin(); iter!=removed.end(); iter++)
{
temp_x = iter->second.second.first;
temp_y = iter->second.second.second;
temp_r_sq = temp_x*temp_x+temp_y*temp_y;
r_squared_array.insert(temp_r_sq);
}
count = 0;
iter2 = r_squared_array.begin();
for(int j=0; j<num_r_values; j++)
{
while(count<removed.size() && *iter2 < r[j]*r[j])
{
count++;
iter2++;
}
Removed_array[i][j] = count;
}
std::map<Site, int>::iterator iter3;
for(iter3 = chem_level_list.begin(); iter3 != chem_level_list.end(); iter3++)
{
if(iter3->second < chem_level_cutoff)
{
chem_level_array[i][iter3->second]++;
}
}
std::deque<boost::tuple<int, int, long int> >::iterator burst_iter = burst_list.begin();
std::deque<boost::tuple<int, int, long int> >::iterator burst_list_end = burst_list.end();
int burst_x;
int burst_y;
long int burst_size;
while(burst_iter != burst_list_end)
{
burst_x = burst_iter->get<0>();
burst_y = burst_iter->get<1>();
burst_size = burst_iter->get<2>();
burst_array.push_back(boost::make_tuple(i, burst_x, burst_y, burst_size));
//.........这里部分代码省略.........
示例11: Qw
inline void converter<point_t>::knot_insertion(point_container_t& P,
std::multiset<value_type>& knots,
std::size_t order,
value_type t) const {
typedef typename point_t::value_type value_type;
// copy knotvector for subscript [] access
std::vector<value_type> kv_cpy(knots.begin(), knots.end());
// get parameter
std::size_t p = order - 1; // degree
std::size_t s = knots.count(t); // multiplicity
std::size_t r = std::max(std::size_t(0), p - s); // number of insertions
// get knotspan
std::size_t k = std::distance(knots.begin(), knots.upper_bound(t));
std::size_t np = P.size(); // number of control points
// start computation
std::size_t nq = np + r;
// helper arrays
std::vector<point_t> Qw(nq);
std::vector<point_t> Rw(p - s + 1);
// copy unaffected points and transform into homogenous coords
for (size_t i = 0; i <= k - p; ++i) {
Qw[i] = P[i].as_homogenous();
}
for (size_t i = k - s - 1; i <= np - 1; ++i) {
Qw[i + r] = P[i].as_homogenous();
}
// helper points
for (size_t i = 0; i <= p - s; ++i) {
Rw[i] = P[k - p + i - 1].as_homogenous();
}
// do knot insertion itself
std::size_t L = 0;
for (std::size_t j = 1; j <= r; ++j) {
L = k - p + j;
for (std::size_t i = 0; i <= p - j - s; ++i) {
value_type alpha =
(t - kv_cpy[L + i - 1]) / (kv_cpy[i + k] - kv_cpy[L + i - 1]);
Rw[i] = alpha * Rw[i + 1] + value_type(1.0 - alpha) * Rw[i];
}
Qw[L - 1] = Rw[0];
Qw[k + r - j - s - 1] = Rw[p - j - s];
}
// insert knots
for (std::size_t i = 0; i < r; ++i) {
knots.insert(t);
}
// copy new control points
P.clear();
// transform back to euclidian space
for (typename std::vector<point_t>::iterator i = Qw.begin(); i != Qw.end();
++i) {
P.push_back((*i).as_euclidian());
}
}