本文整理汇总了C++中Vector_set::add_element方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector_set::add_element方法的具体用法?C++ Vector_set::add_element怎么用?C++ Vector_set::add_element使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector_set
的用法示例。
在下文中一共展示了Vector_set::add_element方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RevHesSweep
//.........这里部分代码省略.........
user_ok = user_atom->rev_sparse_hes(user_vx,
user_s, user_t, user_q, pack_r, pack_u, pack_v
);
if( user_bool )
user_ok = user_atom->rev_sparse_hes(user_vx,
user_s, user_t, user_q, bool_r, bool_u, bool_v
);
if( user_set )
user_ok = user_atom->rev_sparse_hes(user_vx,
user_s, user_t, user_q, set_r, set_u, set_v
);
if( ! user_ok )
{ std::string msg =
atomic_base<Base>::class_name(user_index)
+ ": atomic_base.rev_sparse_hes: returned false\n";
if( user_pack )
msg += "sparsity = pack_sparsity_enum";
if( user_bool )
msg += "sparsity = bool_sparsity_enum";
if( user_set )
msg += "sparsity = set_sparsity_enum";
CPPAD_ASSERT_KNOWN(false, msg.c_str() );
}
# endif
for(i = 0; i < user_n; i++) if( user_ix[i] > 0 )
{
size_t i_x = user_ix[i];
if( user_t[i] )
RevJac[i_x] = true;
if( user_pack )
{
for(j = 0; j < user_q; j++)
if( pack_v[ i * user_q + j ] )
rev_hes_sparse.add_element(i_x, j);
}
if( user_bool )
{
for(j = 0; j < user_q; j++)
if( bool_v[ i * user_q + j ] )
rev_hes_sparse.add_element(i_x, j);
}
if( user_set )
{
set_itr = set_v[i].begin();
set_end = set_v[i].end();
while( set_itr != set_end )
rev_hes_sparse.add_element(i_x, *set_itr++);
}
}
}
break;
case UsrapOp:
// parameter argument in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_arg );
CPPAD_ASSERT_UNKNOWN( 0 < user_j && user_j <= user_n );
CPPAD_ASSERT_UNKNOWN( NumArg(op) == 1 );
CPPAD_ASSERT_UNKNOWN( size_t(arg[0]) < num_par );
--user_j;
user_ix[user_j] = 0;
user_vx[user_j] = false;
if( user_j == 0 )
user_state = user_start;
break;
case UsravOp:
示例2: ForJacSweep
//.........这里部分代码省略.........
CPPAD_ASSERT_UNKNOWN( user_id == size_t(arg[1]) );
CPPAD_ASSERT_UNKNOWN( user_n == size_t(arg[2]) );
CPPAD_ASSERT_UNKNOWN( user_m == size_t(arg[3]) );
user_state = user_start;
}
break;
case UsrapOp:
// parameter argument in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_arg );
CPPAD_ASSERT_UNKNOWN( user_j < user_n );
CPPAD_ASSERT_UNKNOWN( size_t(arg[0]) < num_par );
// parameters have an empty sparsity pattern
user_r[user_j].clear();
++user_j;
if( user_j == user_n )
{ // call users function for this operation
user_atomic<Base>::for_jac_sparse(user_index, user_id,
user_n, user_m, user_q, user_r, user_s
);
user_state = user_ret;
}
break;
case UsravOp:
// variable argument in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_arg );
CPPAD_ASSERT_UNKNOWN( user_j < user_n );
CPPAD_ASSERT_UNKNOWN( size_t(arg[0]) <= i_var );
// set user_r[user_j] to sparsity pattern for variable arg[0]
user_r[user_j].clear();
var_sparsity.begin(arg[0]);
i = var_sparsity.next_element();
while( i < user_q )
{ user_r[user_j].insert(i);
i = var_sparsity.next_element();
}
++user_j;
if( user_j == user_n )
{ // call users function for this operation
user_atomic<Base>::for_jac_sparse(user_index, user_id,
user_n, user_m, user_q, user_r, user_s
);
user_state = user_ret;
}
break;
case UsrrpOp:
// parameter result in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_ret );
CPPAD_ASSERT_UNKNOWN( user_i < user_m );
user_i++;
if( user_i == user_m )
user_state = user_end;
break;
case UsrrvOp:
// variable result in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_ret );
CPPAD_ASSERT_UNKNOWN( user_i < user_m );
// It might be faster if we add set union to var_sparsity
// where one of the sets is not in var_sparsity
set_itr = user_s[user_i].begin();
set_end = user_s[user_i].end();
while( set_itr != set_end )
var_sparsity.add_element(i_var, *set_itr++);
user_i++;
if( user_i == user_m )
user_state = user_end;
break;
// -------------------------------------------------
default:
CPPAD_ASSERT_UNKNOWN(0);
}
# if CPPAD_FOR_JAC_SWEEP_TRACE
// value for this variable
for(j = 0; j < limit; j++)
z_value[j] = false;
var_sparsity.begin(i_var);
j = var_sparsity.next_element();
while( j < limit )
{ z_value[j] = true;
j = var_sparsity.next_element();
}
printOp(
std::cout,
play,
i_var,
op,
arg,
1,
&z_value,
0,
(CppAD::vector<bool> *) CPPAD_NULL
);
}
std::cout << std::endl;
# else
}
示例3: RevJacSweep
//.........这里部分代码省略.........
atomic_base<Base>::class_name(user_index)
+ ": atomic_base.rev_sparse_jac: returned false";
CPPAD_ASSERT_KNOWN(false, msg.c_str() );
}
# endif
user_state = user_end;
}
break;
case UsrapOp:
// parameter argument in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_arg );
CPPAD_ASSERT_UNKNOWN( 0 < user_j && user_j <= user_n );
CPPAD_ASSERT_UNKNOWN( NumArg(op) == 1 );
CPPAD_ASSERT_UNKNOWN( size_t(arg[0]) < num_par );
--user_j;
if( user_j == 0 )
user_state = user_start;
break;
case UsravOp:
// variable argument in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_arg );
CPPAD_ASSERT_UNKNOWN( 0 < user_j && user_j <= user_n );
CPPAD_ASSERT_UNKNOWN( NumArg(op) == 1 );
CPPAD_ASSERT_UNKNOWN( size_t(arg[0]) <= i_var );
CPPAD_ASSERT_UNKNOWN( 0 < arg[0] );
--user_j;
// It might be faster if we add set union to var_sparsity
// where one of the sets is not in var_sparsity.
if( user_bool )
{ for(j = 0; j < user_q; j++)
if( bool_s[ user_j * user_q + j ] )
var_sparsity.add_element(arg[0], j);
}
else
{ set_itr = set_s[user_j].begin();
set_end = set_s[user_j].end();
while( set_itr != set_end )
var_sparsity.add_element(arg[0], *set_itr++);
}
if( user_j == 0 )
user_state = user_start;
break;
case UsrrpOp:
// parameter result in an atomic operation sequence
CPPAD_ASSERT_UNKNOWN( user_state == user_ret );
CPPAD_ASSERT_UNKNOWN( 0 < user_i && user_i <= user_m );
CPPAD_ASSERT_UNKNOWN( NumArg(op) == 1 );
CPPAD_ASSERT_UNKNOWN( size_t(arg[0]) < num_par );
--user_i;
if( user_i == 0 )
{ // call users function for this operation
user_atom->set_id(user_id);
if( user_bool)
CPPAD_ATOMIC_CALL(
user_q, bool_r, bool_s
);
else
CPPAD_ATOMIC_CALL(
user_q, set_r, set_s
);
user_state = user_arg;
}
break;