本文整理汇总了C++中Tuple::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ Tuple::begin方法的具体用法?C++ Tuple::begin怎么用?C++ Tuple::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tuple
的用法示例。
在下文中一共展示了Tuple::begin方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: operator
bool operator()(const Tuple &t1, const Tuple &t2) const {
vector<size_t>::const_iterator it = this->order.begin();
for (; it != this->order.end(); ++it) {
if (*it >= t1.size()) {
if (*it < t2.size()) {
return false;
}
} else if (*it >= t2.size()) {
return true;
} else if (t1[*it] != t2[*it]) {
return t1[*it] < t2[*it];
}
}
if (this->total_ordering) {
Tuple::const_iterator cit1 = t1.begin();
Tuple::const_iterator cit2 = t2.begin();
while (cit1 != t1.end() && cit2 != t2.end()) {
if (*cit1 != *cit2) {
return *cit1 < *cit2;
}
++cit1;
++cit2;
}
if (cit1 == t1.end()) {
return cit2 != t2.end();
}
}
return false;
}
示例2: error_total
double error_total(double (*efn)(MeshFunction*, MeshFunction*, RefMap*, RefMap*),
double (*nfn)(MeshFunction*, RefMap*), Tuple<Solution*>& slns1, Tuple<Solution*>& slns2 )
{
Tuple<Solution*>::iterator it1, it2;
double error = 0.0, norm = 0.0;
for (it1=slns1.begin(), it2=slns2.begin(); it1 < slns1.end(); it1++, it2++) {
assert(it2 < slns2.end());
error += sqr(calc_abs_error(efn, *it1, *it2));
if (nfn) norm += sqr(calc_norm(nfn, *it2));
}
return (nfn ? sqrt(error/norm) : sqrt(error));
}
示例3: paranoidInsertTypeCheck
void TupleStorageSubBlock::paranoidInsertTypeCheck(const Tuple &tuple, const AllowedTypeConversion atc) {
#ifdef QUICKSTEP_DEBUG
assert(relation_.size() == tuple.size());
Tuple::const_iterator value_it = tuple.begin();
CatalogRelation::const_iterator attr_it = relation_.begin();
while (value_it != tuple.end()) {
switch (atc) {
case kNone:
assert(value_it->getType().equals(attr_it->getType()));
break;
case kSafe:
assert(value_it->getType().isSafelyCoercibleTo(attr_it->getType()));
break;
case kUnsafe:
assert(value_it->getType().isCoercibleTo(attr_it->getType()));
break;
}
++value_it;
++attr_it;
}
#endif
}
示例4: retrieve
virtual void retrieve(const Query& q, Answer& a) throw (dlvhex::PluginError)
{
// get input
assert(q.input.size() == 1);
ID pred = q.input[0];
// get outputs
assert(q.pattern.size() == outputSize);
// build unifier
OrdinaryAtom unifier(ID::MAINKIND_ATOM | ID::SUBKIND_ATOM_ORDINARYN);
unifier.tuple.push_back(pred);
unifier.tuple.insert(unifier.tuple.begin(), q.pattern.begin(), q.pattern.end());
// check if <pred>(pattern) part of interpretation (=forward <pred> via external atom)
assert(q.interpretation != 0);
const Interpretation::Storage& bits = q.interpretation->getStorage();
for(Interpretation::Storage::enumerator it = bits.first();
it != bits.end(); ++it)
{
const OrdinaryAtom& ogatom = registry->ogatoms.getByID(ID(ID::MAINKIND_ATOM | ID::SUBKIND_ATOM_ORDINARYG, *it));
if( ogatom.unifiesWith(unifier) )
{
Tuple partial;
partial.insert(partial.begin(), ogatom.tuple.begin()+1, ogatom.tuple.end());
a.get().push_back(partial);
}
}
}
示例5: operator
bool operator()(const Tuple& tup) const {
if (tup.size() >= size) {
auto& tarr = static_types_array<T...>::arr;
auto begin = tup.begin();
return std::equal(begin, begin + size, tarr.begin(), types_only_eq);
}
return false;
}
示例6:
inline Tuple *replace_tuple(const Tuple *t, size_t pos, const Value &val)
{
Tuple *ret = new_tuple(std::max(t->m_count, pos+1));
std::copy(t->begin(), t->begin() + std::min(pos, t->m_count), ret->m_data);
if (pos < t->m_count)
std::copy(t->begin() + pos + 1, t->end(), ret->m_data + pos + 1);
std::fill(ret->begin() + t->m_count, ret->end(), Nil);
ret->m_data[pos] = val;
return ret;
}
示例7: addEntry
bool addEntry(const Tuple &tuple) {
Tuple::const_iterator attr_it;
int bloom_filter_id = 0;
for (attr_it = tuple.begin(); attr_it != tuple.end(); ++attr_it, ++bloom_filter_id) {
if (!attr_it->isNull()) {
ScopedPtr<char> attr_data_ptr(new char[attr_it->getInstanceByteLength()]);
attr_it->copyInto(static_cast<void*>(attr_data_ptr.get()));
bloom_filters_.get()[bloom_filter_id].insert(attr_data_ptr.get(),
attr_it->getInstanceByteLength());
}
}
return true;
}
示例8: printTuple
/**
* @brief utility function that prints a Tuple on the specified ostream
*/
void ActionPluginFinalCallback::printTuple(std::ostream& output,
const Tuple& tuple, const RegistryPtr registryPtr) {
bool first = true;
for (Tuple::const_iterator it = tuple.begin(); it != tuple.end(); it++) {
if (first)
first = !first;
else
output << ", ";
if (it->isConstantTerm() || it->isVariableTerm())
output << registryPtr->getTermStringByID(*it);
else
output << it->address;
}
}
示例9: paranoidInsertTypeCheck
void TupleStorageSubBlock::paranoidInsertTypeCheck(const Tuple &tuple) {
#ifdef QUICKSTEP_DEBUG
assert(relation_.size() == tuple.size());
Tuple::const_iterator value_it = tuple.begin();
CatalogRelationSchema::const_iterator attr_it = relation_.begin();
while (value_it != tuple.end()) {
assert(value_it->isPlausibleInstanceOf(attr_it->getType().getSignature()));
++value_it;
++attr_it;
}
#endif
}
示例10: if
bool
Tuple::operator<(const Tuple& rhs) const
{
auto iterl = begin();
auto iterr = rhs.begin();
while (iterl != end() && iterr != rhs.end())
{
if (iterl->first < iterr->first)
{
return true;
}
else if (iterr->first < iterl->first)
{
return false;
}
else if (iterl->second < iterr->second)
{
return true;
}
else if (iterr->second < iterl->second)
{
return false;
}
//this pair is equal, go to the next one
++iterl;
++iterr;
}
if (iterl == end() && iterr == rhs.end())
{
//they must be equal, so return false
return false;
}
else if (iterl == end())
{
return true;
}
else
{
return false;
}
}
示例11:
TTailHairpin::TTailHairpin(const Tuple &tuple, const Tuple &size) {
int len = size[1];
Tuple t = tuple;
std::sort(t.begin(), t.end(), std::less<int>{});
Frag frag;
for (int i = t[0]; i <= t[1]; i++) {
frag.push_back(i);
}
d_frags.push_back(std::move(frag));
for (int i = t[2]; i < len; i++) {
frag.push_back(i);
}
d_frags.push_back(std::move(frag));
d_max_len = std::max(t[1] - t[0] - 1, len - t[2] - 1);
d_indices = std::make_unique<Mati>(d_max_len, 3);
for (int i = 0; i < d_max_len; i++) for (int j = 0; j < 3; j++) (*d_indices)(i, j) = -1;
set_indices(0, d_frags[0].front() + 1, d_frags[0].back() - 1);
set_indices(1, d_frags[1].front() + 1, len - 1);
}
示例12: run
void Environment::run(RunningContext *context)
{
const Instruction &ins = m_ipos;
m_context = context;
if (!context)
{
m_running = false;
} else if (!m_running)
{
clear_vstore();
TRACE_PRINTF(TRACE_VM, TRACE_INFO, "Entering running state with %p\n", context);
m_running = true;
const SourcePos *last_pos = NULL; // used for debug output below.
const Instruction *ipos;
while (m_context && (ipos = m_context->next()))
{
size_t output = -1;
size_t expected = -1;
# define CHECK_STACK(in, out) TRACE_OUT(TRACE_VM, TRACE_SPAM) {\
assert(m_context->stack_count() >= (size_t)(in)); \
if ((out) != -1) { assert((long)(expected = m_context->stack_count() - (size_t)(in) + (size_t)(out)) >= 0); } \
tprintf("Stack info: before(%d), in(%d), out(%d), expected(%d)\n", (int)m_context->stack_count(), (int)(in), (int)(out), (int)expected); \
output = (out); \
}
m_ipos = *ipos;
TRACE_DO(TRACE_VM, TRACE_INFO) {
const SourcePos &pos = m_context->m_instructions->source_pos(ipos);
if (!last_pos || *last_pos != pos)
tprintf("Source Position: %s:%d:%d (%s)\n", pos.file.c_str(), (int)pos.line_num, (int)pos.column, pos.annotation.c_str());
last_pos = &pos;
}
TRACE_OUT(TRACE_VM, TRACE_SPAM) {
tprintf("Instruction: %[email protected]%d\n",
inspect(ins).c_str(),
(int)(ipos - &*m_context->instructions().begin())
);
tprintf("Stack: %d deep", (int)m_context->stack_count());
const Value *it;
for (it = m_context->stack_begin(); it != m_context->stack_pos(); it++)
{
tprintf("\n %s", inspect(*it).c_str());
}
tprintf(" <--\n");
}
switch(ins.instruction)
{
case NOP:
CHECK_STACK(0, 0);
break;
case DEBUGGER:
CHECK_STACK(0, 0);
{
String *action = ptr<String>(ins.arg1);
if (*action == "interrupt")
{
DO_DEBUG __asm__("int3");
} else if (*action == "trace_enable") {
trace_mute = false;
} else if (*action == "trace_disable") {
trace_mute = true;
}
}
break;
case POP:
CHECK_STACK(1, 0);
m_context->pop();
break;
case PUSH:
CHECK_STACK(0, 1);
m_context->push(ins.arg1);
break;
case SWAP: {
CHECK_STACK(2, 2);
Value tmp1 = m_context->top();
m_context->pop();
Value tmp2 = m_context->top();
m_context->pop();
m_context->push(tmp1);
m_context->push(tmp2);
}
break;
case DUP_TOP:
CHECK_STACK(1, 2);
m_context->push(m_context->top());
break;
case IS: {
CHECK_STACK(1, 1);
Value res = bvalue(ins.arg1 == m_context->top());
m_context->pop();
m_context->push(res);
}
break;
case IS_EQ: {
CHECK_STACK(2, 1);
//.........这里部分代码省略.........
示例13: operator
/**
* @brief Best Model Selector, Execution Schedule Builder, Execute Actions on Environment
*/
void ActionPluginFinalCallback::operator()() {
DBGLOG(DBG, "\nActionPluginFinalCallback called");
if (ctxData.nameBestModelSelectorMap.count(
ctxData.getBestModelSelectorSelected()) == 0)
throw PluginError("The BestModelSelector chosen doesn't exist");
ctxData.nameBestModelSelectorMap[ctxData.getBestModelSelectorSelected()]->getBestModel(
ctxData.iteratorBestModel, ctxData.bestModelsContainer);
std::stringstream ss;
(*ctxData.iteratorBestModel)->interpretation->print(ss);
DBGLOG(DBG, "\nBestModel selected: " << ss.str());
DBGLOG(DBG, "\nCall the executionModeController");
std::multimap<int, Tuple> multimapOfExecution;
executionModeController(multimapOfExecution);
DBGLOG(DBG, "\nThe MultiMapOfExecution:");
DBGLOG(DBG, "Precedence\tTuple");
std::multimap<int, Tuple>::iterator itMMOE;
for (itMMOE = multimapOfExecution.begin();
itMMOE != multimapOfExecution.end(); itMMOE++) {
const Tuple& tempTuple = itMMOE->second;
std::stringstream ss;
printTuple(ss, tempTuple, registryPtr);
DBGLOG(DBG, itMMOE->first << "\t\t" << ss.str());
}
if (ctxData.nameExecutionScheduleBuilderMap.count(
ctxData.getExecutionScheduleBuilderSelected()) == 0)
throw PluginError("The ExecutionScheduleBuilder chosen doesn't exist");
DBGLOG(DBG, "\nCall the executionScheduleBuilder");
std::list < std::set<Tuple> > listOfExecution;
ctxData.nameExecutionScheduleBuilderMap[ctxData.getExecutionScheduleBuilderSelected()]->rewrite(
multimapOfExecution, listOfExecution, (*(ctxData.iteratorBestModel))->interpretation);
DBGLOG(DBG, "\nThe ListOfExecution:");
std::list<std::set<Tuple> >::iterator itLOE;
for (itLOE = listOfExecution.begin(); itLOE != listOfExecution.end();
itLOE++) {
std::set < Tuple > &tempSet = (*itLOE);
for (std::set<Tuple>::iterator itLOEs = tempSet.begin();
itLOEs != tempSet.end(); itLOEs++) {
const Tuple& tempTuple = (*itLOEs);
std::stringstream ss;
printTuple(ss, tempTuple, registryPtr);
DBGLOG(DBG, ss.str());
}
}
DBGLOG(DBG,
"\nControl if the order of Set in the List corresponds to their precedence");
if (checkIfTheListIsCorrect(multimapOfExecution, listOfExecution)) {
DBGLOG(DBG, "The List is correct");
} else {
DBGLOG(DBG, "The List isn't correct");
throw PluginError(
"The order of Set in the ListOfExecution doens't correspond to their precedence");
}
DBGLOG(DBG, "\nExecute the actions in the right order");
for (itLOE = listOfExecution.begin(); itLOE != listOfExecution.end();
itLOE++) {
std::set < Tuple > &tempSet = (*itLOE);
for (std::set<Tuple>::iterator itLOEs = tempSet.begin();
itLOEs != tempSet.end(); itLOEs++) {
const Tuple& tempTuple = (*itLOEs);
if (*tempTuple.begin() == ctxData.getIDContinue()) {
ctxData.continueIteration = true;
continue;
} else if (*tempTuple.begin() == ctxData.getIDStop()) {
ctxData.stopIteration = true;
continue;
}
Tuple tupleForExecute;
tupleForExecute.insert(tupleForExecute.begin(),
tempTuple.begin() + 1, tempTuple.end());
std::stringstream ss;
printTuple(ss, tempTuple, registryPtr);
DBGLOG(DBG, "tupleForExecute: " << ss.str());
ss.str("");
printTuple(ss, tupleForExecute, registryPtr);
DBGLOG(DBG, "tempTuple: " << ss.str());
std::map<std::string, PluginActionBasePtr>::iterator it =
ctxData.namePluginActionBaseMap.find(
registryPtr->getTermStringByID(*tempTuple.begin()));
//.........这里部分代码省略.........