本文整理汇总了C++中cbegin函数的典型用法代码示例。如果您正苦于以下问题:C++ cbegin函数的具体用法?C++ cbegin怎么用?C++ cbegin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cbegin函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: getProperty
void Load::loadMultipleFiles() {
// allFilenames contains "rows" of filenames. If the row has more than 1 file
// in it
// then that row is to be summed across each file in the row
const std::vector<std::vector<std::string>> allFilenames =
getProperty("Filename");
std::string outputWsName = getProperty("OutputWorkspace");
std::vector<std::string> wsNames(allFilenames.size());
std::transform(allFilenames.begin(), allFilenames.end(), wsNames.begin(),
generateWsNameFromFileNames);
auto wsName = wsNames.cbegin();
assert(allFilenames.size() == wsNames.size());
std::vector<API::Workspace_sptr> loadedWsList;
loadedWsList.reserve(allFilenames.size());
Workspace_sptr tempWs;
// Cycle through the filenames and wsNames.
for (auto filenames = allFilenames.cbegin(); filenames != allFilenames.cend();
++filenames, ++wsName) {
auto filename = filenames->cbegin();
Workspace_sptr sumWS = loadFileToWs(*filename, *wsName);
++filename;
for (; filename != filenames->cend(); ++filename) {
tempWs = loadFileToWs(*filename, "[email protected][email protected]");
sumWS = plusWs(sumWS, tempWs);
}
API::WorkspaceGroup_sptr group =
boost::dynamic_pointer_cast<WorkspaceGroup>(sumWS);
if (group) {
std::vector<std::string> childWsNames = group->getNames();
auto childWsName = childWsNames.begin();
size_t count = 1;
for (; childWsName != childWsNames.end(); ++childWsName, ++count) {
Workspace_sptr childWs = group->getItem(*childWsName);
const std::string childName =
group->getName() + "_" + std::to_string(count);
API::AnalysisDataService::Instance().addOrReplace(childName, childWs);
// childWs->setName(group->getName() + "_" +
// boost::lexical_cast<std::string>(count));
}
}
// Add the sum to the list of loaded workspace names.
loadedWsList.push_back(sumWS);
}
// If we only have one loaded ws, set it as the output.
if (loadedWsList.size() == 1) {
setProperty("OutputWorkspace", loadedWsList[0]);
AnalysisDataService::Instance().rename(loadedWsList[0]->getName(),
outputWsName);
}
// Else we have multiple loaded workspaces - group them and set the group as
// output.
else {
API::WorkspaceGroup_sptr group = groupWsList(loadedWsList);
setProperty("OutputWorkspace", group);
std::vector<std::string> childWsNames = group->getNames();
size_t count = 1;
for (auto &childWsName : childWsNames) {
if (childWsName == outputWsName) {
Mantid::API::Workspace_sptr child = group->getItem(childWsName);
// child->setName(child->getName() + "_" +
// boost::lexical_cast<std::string>(count));
const std::string childName =
child->getName() + "_" + std::to_string(count);
API::AnalysisDataService::Instance().addOrReplace(childName, child);
count++;
}
}
childWsNames = group->getNames();
count = 1;
for (auto &childWsName : childWsNames) {
Workspace_sptr childWs = group->getItem(childWsName);
std::string outWsPropName = "OutputWorkspace_" + std::to_string(count);
++count;
declareProperty(Kernel::make_unique<WorkspaceProperty<Workspace>>(
outWsPropName, childWsName, Direction::Output));
setProperty(outWsPropName, childWs);
}
}
// Clean up.
if (tempWs) {
Algorithm_sptr alg =
AlgorithmManager::Instance().createUnmanaged("DeleteWorkspace");
alg->initialize();
alg->setChild(true);
alg->setProperty("Workspace", tempWs);
alg->execute();
}
}
开发者ID:rosswhitfield,项目名称:mantid,代码行数:99,代码来源:Load.cpp
示例2: appendLinesAlongPolylines
std::unique_ptr<MeshLib::Mesh> appendLinesAlongPolylines(
const MeshLib::Mesh& mesh, const GeoLib::PolylineVec& ply_vec)
{
// copy existing nodes and elements
std::vector<MeshLib::Node*> vec_new_nodes = MeshLib::copyNodeVector(mesh.getNodes());
std::vector<MeshLib::Element*> vec_new_eles = MeshLib::copyElementVector(mesh.getElements(), vec_new_nodes);
std::vector<int> new_mat_ids;
{
if (mesh.getProperties().existsPropertyVector<int>("MaterialIDs")) {
auto ids =
mesh.getProperties().getPropertyVector<int>("MaterialIDs");
new_mat_ids.reserve(ids->size());
std::copy(ids->cbegin(), ids->cend(),
std::back_inserter(new_mat_ids));
}
}
int max_matID(0);
if (!new_mat_ids.empty())
max_matID = *(std::max_element(new_mat_ids.cbegin(), new_mat_ids.cend()));
const std::size_t n_ply (ply_vec.size());
// for each polyline
for (std::size_t k(0); k < n_ply; k++)
{
const GeoLib::Polyline* ply = (*ply_vec.getVector())[k];
// search nodes on the polyline
MeshGeoToolsLib::MeshNodesAlongPolyline mshNodesAlongPoly(
mesh, *ply, mesh.getMinEdgeLength() * 0.5,
MeshGeoToolsLib::SearchAllNodes::Yes);
auto &vec_nodes_on_ply = mshNodesAlongPoly.getNodeIDs();
if (vec_nodes_on_ply.empty()) {
std::string ply_name;
ply_vec.getNameOfElementByID(k, ply_name);
INFO("No nodes found on polyline %s", ply_name.c_str());
continue;
}
// add line elements
for (std::size_t i=0; i<vec_nodes_on_ply.size()-1; i++) {
std::array<MeshLib::Node*, 2> element_nodes;
element_nodes[0] = vec_new_nodes[vec_nodes_on_ply[i]];
element_nodes[1] = vec_new_nodes[vec_nodes_on_ply[i+1]];
vec_new_eles.push_back(
new MeshLib::Line(element_nodes, vec_new_eles.size()));
new_mat_ids.push_back(max_matID+k+1);
}
}
// generate a mesh
const std::string name = mesh.getName() + "_with_lines";
auto new_mesh =
std::make_unique<MeshLib::Mesh>(name, vec_new_nodes, vec_new_eles);
auto opt_mat_pv = new_mesh->getProperties().createNewPropertyVector<int>(
"MaterialIDs", MeshLib::MeshItemType::Cell);
if (opt_mat_pv) {
auto & mat_pv = *opt_mat_pv;
mat_pv.reserve(new_mat_ids.size());
std::copy(new_mat_ids.cbegin(), new_mat_ids.cend(),
std::back_inserter(mat_pv));
}
return new_mesh;
}
开发者ID:OlafKolditz,项目名称:ogs,代码行数:64,代码来源:AppendLinesAlongPolyline.cpp
示例3: find
estring::const_iterator estring::find(char_t c) const {
return find(c, cbegin());
}
开发者ID:okknor,项目名称:edit,代码行数:3,代码来源:encoded_string.cpp
示例4: tags
/// Get the list of tags for this object.
const TagList& tags() const {
return osmium::detail::subitem_of_type<const TagList>(cbegin(), cend());
}
开发者ID:AFDudley,项目名称:osm2pgsql,代码行数:4,代码来源:object.hpp
示例5: cend
const_iterator cend() const { return cbegin(); }
开发者ID:bistromath,项目名称:pothos,代码行数:1,代码来源:array.hpp
示例6: const_reverse_iterator
cell_vector::const_reverse_iterator cell_vector::crend() const
{
return const_reverse_iterator(cbegin());
}
开发者ID:topillar,项目名称:xlnt,代码行数:4,代码来源:cell_vector.cpp
示例7: TEST
/**
* This verifies that
* 1) the load is evenly balanced across servers.
* 2) the act of adding a server to a pool will never result in a server
* handling keyspace that it previously handled but no longer does.
* If this occurs, then stale data may be returned.
*/
TEST(ch3, verify_correctness) {
uint32_t i, j;
uint32_t maximum_pool_size = furc_maximum_pool_size();
char key[MAX_KEY_LENGTH + 1];
std::vector<uint64_t> pools[NUM_POOLS];
uint32_t sizes[NUM_POOLS];
size_t num_pools;
auto weights = std::make_unique<std::array<double, 1U << 23U>>();
weights->fill(1.0);
srand(time(nullptr));
for (num_pools = 0; /* see end of loop */; ++num_pools) {
if (num_pools == 0) {
sizes[num_pools] = 1;
} else if (num_pools == NUM_POOLS - 1) {
sizes[num_pools] = maximum_pool_size;
} else if (num_pools % 2 == 1) { // grow pool size geometrically
sizes[num_pools] = sizes[num_pools - 1] * drand_in_range(1.5, 2.5);
} else { // grow pool size arithmetically
sizes[num_pools] = sizes[num_pools - 1] + rand_in_range(1, 11);
}
/* Make sure we don't exceed the maximum pool size. */
if (sizes[num_pools] > maximum_pool_size) {
sizes[num_pools] = maximum_pool_size;
}
pools[num_pools] = std::vector<uint64_t>(sizes[num_pools]);
if (sizes[num_pools] == maximum_pool_size)
break;
}
for (i = 0; i < NUM_SAMPLES; ++i) {
size_t previous_num = -1;
int len;
make_random_key(key, MAX_KEY_LENGTH);
len = strlen(key);
// hash the same key in each pool, in increasing pool size order
for (j = 0; j < num_pools; ++j) {
size_t num = furc_hash(key, len, sizes[j]);
EXPECT_LT(num, sizes[j]);
// Verify that the weighted furc yields identical result with weights at 1
assert(sizes[j] <= weights->size());
folly::Range<const double*> weightRange(
weights->cbegin(), weights->cbegin() + sizes[j]);
size_t weighted = facebook::mcrouter::weightedFurcHash(
folly::StringPiece(key, len), weightRange);
EXPECT_EQ(num, weighted);
++pools[j][num];
// make sure that this key either hashes the same server,
// or hashes to a new server
if (previous_num != num && j > 0) {
EXPECT_GE(num, sizes[j - 1]);
}
previous_num = num;
}
}
for (i = 0; i < num_pools; ++i) {
/* Verify that load is evenly distributed. This isn't easy to do
generally without significantly increasing the runtime by choosing
a huge NUM_SAMPLES, so just check pools up to 1000 in size. */
uint32_t pool_size = sizes[i];
if (pool_size > 1000)
break;
double expected_mean = ((double)NUM_SAMPLES) / pool_size;
double max_diff = 0;
double sum = 0;
for (j = 0; j < pool_size; j++) {
double diff = std::abs(pools[i][j] - expected_mean);
if (diff > max_diff)
max_diff = diff;
sum += pools[i][j];
}
double mean = sum / pool_size;
// expect the sample mean to be within 5% of expected mean
EXPECT_NEAR(mean, expected_mean, expected_mean * 0.05);
// expect the maximum deviation from mean to be within 15%
EXPECT_NEAR(max_diff, 0, mean * 0.15);
sum = 0;
for (j = 0; j < pool_size; j++) {
//.........这里部分代码省略.........
开发者ID:facebook,项目名称:mcrouter,代码行数:101,代码来源:hash_test.cpp
示例8: string
/*!
* \brief Returns the full path to a working copy of the test file with the specified \a relativeTestFilePath.
*
* The specified \a mode controls whether a working copy is actually created or whether just the path is returned. If only the
* path is returned, the \a relativeTestFilePath is ignored.
*
* In contrast to workingCopyPath(), this method allows to adjust the relative path of the working copy within the working copy
* directory via \a relativeWorkingCopyPath.
*
* \remarks
* - The test file specified via \a relativeTestFilePath is located using testFilePath().
* - The name of the working copy file specified via \a relativeWorkingCopyPath will be adjusted if it already exists in the file
* system and can not be truncated.
*/
string TestApplication::workingCopyPathAs(
const std::string &relativeTestFilePath, const std::string &relativeWorkingCopyPath, WorkingCopyMode mode) const
{
// ensure working directory is present
if (!dirExists(m_workingDir) && !makeDir(m_workingDir)) {
cerr << Phrases::Error << "Unable to create working copy for \"" << relativeTestFilePath << "\": can't create working directory \""
<< m_workingDir << "\"." << Phrases::EndFlush;
return string();
}
// ensure subdirectory exists
const auto parts = splitString<vector<string>>(relativeWorkingCopyPath, "/", EmptyPartsTreat::Omit);
if (!parts.empty()) {
// create subdirectory level by level
string currentLevel;
currentLevel.reserve(m_workingDir.size() + relativeWorkingCopyPath.size() + 1);
currentLevel.assign(m_workingDir);
for (auto i = parts.cbegin(), end = parts.end() - 1; i != end; ++i) {
if (currentLevel.back() != '/') {
currentLevel += '/';
}
currentLevel += *i;
// continue if subdirectory level already exists or we can successfully create the directory
if (dirExists(currentLevel) || makeDir(currentLevel)) {
continue;
}
// fail otherwise
cerr << Phrases::Error << "Unable to create working copy for \"" << relativeWorkingCopyPath << "\": can't create directory \""
<< currentLevel << "\" (inside working directory)." << Phrases::EndFlush;
return string();
}
}
// just return the path if we don't want to actually create a copy
if (mode == WorkingCopyMode::NoCopy) {
return m_workingDir + relativeWorkingCopyPath;
}
// copy the file
const auto origFilePath(testFilePath(relativeTestFilePath));
auto workingCopyPath(m_workingDir + relativeWorkingCopyPath);
size_t workingCopyPathAttempt = 0;
NativeFileStream origFile, workingCopy;
origFile.open(origFilePath, ios_base::in | ios_base::binary);
if (origFile.fail()) {
cerr << Phrases::Error << "Unable to create working copy for \"" << relativeTestFilePath
<< "\": an IO error occurred when opening original file \"" << origFilePath << "\"." << Phrases::EndFlush;
cerr << "error: " << strerror(errno) << endl;
return string();
}
workingCopy.open(workingCopyPath, ios_base::out | ios_base::binary | ios_base::trunc);
while (workingCopy.fail() && fileSystemItemExists(workingCopyPath)) {
// adjust the working copy path if the target file already exists and can not be truncated
workingCopyPath = argsToString(m_workingDir, relativeWorkingCopyPath, '.', ++workingCopyPathAttempt);
workingCopy.clear();
workingCopy.open(workingCopyPath, ios_base::out | ios_base::binary | ios_base::trunc);
}
if (workingCopy.fail()) {
cerr << Phrases::Error << "Unable to create working copy for \"" << relativeTestFilePath
<< "\": an IO error occurred when opening target file \"" << workingCopyPath << "\"." << Phrases::EndFlush;
cerr << "error: " << strerror(errno) << endl;
return string();
}
workingCopy << origFile.rdbuf();
if (!origFile.fail() && !workingCopy.fail()) {
return workingCopyPath;
}
cerr << Phrases::Error << "Unable to create working copy for \"" << relativeTestFilePath << "\": ";
if (origFile.fail()) {
cerr << "an IO error occurred when reading original file \"" << origFilePath << "\"";
return string();
}
if (workingCopy.fail()) {
if (origFile.fail()) {
cerr << " and ";
}
cerr << " an IO error occurred when writing to target file \"" << workingCopyPath << "\".";
}
cerr << "error: " << strerror(errno) << endl;
return string();
}
开发者ID:Martchus,项目名称:cpp-utilities,代码行数:97,代码来源:testutils.cpp
示例9: rootMagic
Calamares::JobResult CommandList::run()
{
QLatin1Literal rootMagic( "@@[email protected]@" );
QLatin1Literal userMagic( "@@[email protected]@" );
System::RunLocation location = m_doChroot ? System::RunLocation::RunInTarget : System::RunLocation::RunInHost;
/* Figure out the replacement for @@[email protected]@ */
QString root = QStringLiteral( "/" );
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
bool needsRootSubstitution = findInCommands( *this, rootMagic );
if ( needsRootSubstitution && ( location == System::RunLocation::RunInHost ) )
{
if ( !gs || !gs->contains( "rootMountPoint" ) )
{
cError() << "No rootMountPoint defined.";
return Calamares::JobResult::error( QCoreApplication::translate( "CommandList", "Could not run command." ),
QCoreApplication::translate( "CommandList", "The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined." ) );
}
root = gs->value( "rootMountPoint" ).toString();
}
bool needsUserSubstitution = findInCommands( *this, userMagic );
if ( needsUserSubstitution && ( !gs || !gs->contains( "username" ) ) )
{
cError() << "No username defined.";
return Calamares::JobResult::error(
QCoreApplication::translate( "CommandList", "Could not run command." ),
QCoreApplication::translate( "CommandList", "The command needs to know the user's name, but no username is defined." ) );
}
QString user = gs->value( "username" ).toString(); // may be blank if unset
for ( CommandList::const_iterator i = cbegin(); i != cend(); ++i )
{
QString processed_cmd = i->command();
processed_cmd.replace( rootMagic, root ).replace( userMagic, user );
bool suppress_result = false;
if ( processed_cmd.startsWith( '-' ) )
{
suppress_result = true;
processed_cmd.remove( 0, 1 ); // Drop the -
}
QStringList shell_cmd { "/bin/sh", "-c" };
shell_cmd << processed_cmd;
int timeout = i->timeout() >= 0 ? i->timeout() : m_timeout;
ProcessResult r = System::runCommand(
location, shell_cmd, QString(), QString(), timeout );
if ( r.getExitCode() != 0 )
{
if ( suppress_result )
cDebug() << "Error code" << r.getExitCode() << "ignored by CommandList configuration.";
else
return r.explainProcess( processed_cmd, timeout );
}
}
return Calamares::JobResult::ok();
}
开发者ID:calamares,项目名称:calamares,代码行数:62,代码来源:CommandList.cpp
示例10:
Hypothesis::operator std::vector<std::vector<int>>() {
std::vector<std::vector<int>> vec;
for (auto s = cbegin(); s != cend(); ++s)
vec.push_back(std::vector<int>(**s));
return vec;
}
开发者ID:fpetran,项目名称:align,代码行数:6,代码来源:containers.cpp
示例11: main
//.........这里部分代码省略.........
cereal::JSONOutputArchive oarchive(ofile);
oarchive(cereal::make_nvp("forest", forest));
ait::log_info(false) << " Done." << std::endl;
}
// Optionally: Serialize forest to binary file.
} else if (binary_forest_file_arg.isSet()) {
{
ait::log_info(false) << "Writing binary forest file " << binary_forest_file_arg.getValue() << "... " << std::flush;
std::ofstream ofile(binary_forest_file_arg.getValue(), std::ios_base::binary);
cereal::BinaryOutputArchive oarchive(ofile);
oarchive(cereal::make_nvp("forest", forest));
ait::log_info(false) << " Done." << std::endl;
}
} else {
throw("This should never happen. Either a JSON or a binary forest file have to be specified!");
}
// Optionally: Compute some stats and print them.
if (print_confusion_matrix) {
ait::log_info(false) << "Creating samples for testing ... " << std::flush;
sample_provider.clear_samples();
for (int i = 0; i < image_list.size(); ++i) {
sample_provider.load_samples_from_image(i, rnd_engine);
}
SampleIteratorT samples_start = sample_provider.get_samples_begin();
SampleIteratorT samples_end = sample_provider.get_samples_end();
ait::log_info(false) << " Done." << std::endl;
std::vector<ait::size_type> sample_counts(num_of_classes, 0);
for (auto sample_it = samples_start; sample_it != samples_end; sample_it++) {
++sample_counts[sample_it->get_label()];
}
auto logger = ait::log_info(true);
logger << "Sample counts>> ";
for (int c = 0; c < num_of_classes; ++c) {
if (c > 0) {
logger << ", ";
}
logger << "class " << c << ": " << sample_counts[c];
}
logger.close();
// For each tree extract leaf node indices for each sample.
std::vector<std::vector<ait::size_type>> forest_leaf_indices = forest.evaluate(samples_start, samples_end);
// Compute number of prediction matches based on a majority vote among the forest.
int match = 0;
int no_match = 0;
for (auto tree_it = forest.cbegin(); tree_it != forest.cend(); ++tree_it) {
for (auto sample_it = samples_start; sample_it != samples_end; sample_it++) {
const auto &node_it = tree_it->cbegin() + (forest_leaf_indices[tree_it - forest.cbegin()][sample_it - samples_start]);
const auto &statistics = node_it->get_statistics();
auto max_it = std::max_element(statistics.get_histogram().cbegin(), statistics.get_histogram().cend());
auto label = max_it - statistics.get_histogram().cbegin();
if (label == sample_it->get_label()) {
match++;
} else {
no_match++;
}
}
}
ait::log_info() << "Match: " << match << ", no match: " << no_match;
// Compute confusion matrix.
auto forest_utils = ait::make_forest_utils(forest);
auto confusion_matrix = forest_utils.compute_confusion_matrix(samples_start, samples_end);
ait::log_info() << "Confusion matrix:" << std::endl << confusion_matrix;
auto norm_confusion_matrix = ait::EvaluationUtils::normalize_confusion_matrix(confusion_matrix);
ait::log_info() << "Normalized confusion matrix:" << std::endl << norm_confusion_matrix;
ait::log_info() << "Diagonal of normalized confusion matrix:" << std::endl << norm_confusion_matrix.diagonal();
// Computing per-frame confusion matrix
ait::log_info() << "Computing per-frame confusion matrix.";
using ConfusionMatrixType = typename decltype(forest_utils)::MatrixType;
ConfusionMatrixType per_frame_confusion_matrix(num_of_classes, num_of_classes);
per_frame_confusion_matrix.setZero();
WeakLearnerT::ParametersT full_parameters(weak_learner_parameters);
// Modify parameters to retrieve all pixels per sample
full_parameters.samples_per_image_fraction = 1.0;
SampleProviderT full_sample_provider(image_list, full_parameters);
for (int i = 0; i < image_list.size(); ++i) {
full_sample_provider.clear_samples();
full_sample_provider.load_samples_from_image(i, rnd_engine);
samples_start = full_sample_provider.get_samples_begin();
samples_end = full_sample_provider.get_samples_end();
forest_utils.update_confusion_matrix(per_frame_confusion_matrix, samples_start, samples_end);
}
ait::log_info() << "Per-frame confusion matrix:" << std::endl << per_frame_confusion_matrix;
ConfusionMatrixType per_frame_norm_confusion_matrix = ait::EvaluationUtils::normalize_confusion_matrix(per_frame_confusion_matrix);
ait::log_info() << "Normalized per-frame confusion matrix:" << std::endl << per_frame_norm_confusion_matrix;
ait::log_info() << "Diagonal of normalized per-frame confusion matrix:" << std::endl << per_frame_norm_confusion_matrix.diagonal();
ait::log_info() << "Mean of diagonal of normalized per-frame confusion matrix:" << std::endl << per_frame_norm_confusion_matrix.diagonal().mean();
}
} catch (const std::runtime_error& error) {
std::cerr << "Runtime exception occured" << std::endl;
std::cerr << error.what() << std::endl;
}
return 0;
}
开发者ID:HelsinkiGroup5,项目名称:Otmar-original-files,代码行数:101,代码来源:depth_trainer.cpp
示例12: initial_stepsize
hooke_jeeves_algorithm<T, N>::hooke_jeeves_algorithm() noexcept
: optimiser<T, N>(),
initial_stepsize(T(1.0)),
stepsize_decrease(T(2.0)) {
this->optimisation_function = [this](const mant::problem<T, N>& problem, const std::vector<std::array<T, N>>& initial_parameters) {
assert(stepsize_decrease > T(1.0));
auto&& start_time = std::chrono::steady_clock::now();
optimise_result<T, N> result;
for (const auto& parameter : initial_parameters) {
const auto objective_value = problem.objective_function(parameter);
++result.evaluations;
result.duration = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now() - start_time);
if (objective_value <= result.objective_value) {
result.parameter = parameter;
result.objective_value = objective_value;
if (result.objective_value <= this->acceptable_objective_value) {
return result;
}
}
if (result.evaluations >= this->maximal_evaluations) {
return result;
} else if (result.duration >= this->maximal_duration) {
return result;
}
}
T stepsize = initial_stepsize;
while (result.duration < this->maximal_duration && result.evaluations < this->maximal_evaluations && result.objective_value > this->acceptable_objective_value) {
bool is_improving = false;
for (std::size_t n = 0; n < this->active_dimensions.size(); ++n) {
auto parameter = result.parameter;
parameter.at(n) += stepsize;
std::transform(
parameter.cbegin(), parameter.cend(),
parameter.begin(),
[](const auto element) {
if (element < T(0.0)) {
return T(0.0);
} else if(element > T(1.0)) {
return T(1.0);
}
return element;
});
auto objective_value = problem.objective_function(parameter);
++result.evaluations;
result.duration = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now() - start_time);
if (objective_value < result.objective_value) {
result.parameter = parameter;
result.objective_value = objective_value;
if (result.objective_value <= this->acceptable_objective_value) {
return result;
}
is_improving = true;
}
if (result.evaluations >= this->maximal_evaluations) {
return result;
} else if (result.duration >= this->maximal_duration) {
return result;
}
parameter.at(n) -= T(2.0) * stepsize;
std::transform(
parameter.cbegin(), parameter.cend(),
parameter.begin(),
[](const auto element) {
return std::fmin(std::fmax(element, T(0.0)), T(1.0));
});
objective_value = problem.objective_function(parameter);
++result.evaluations;
result.duration = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now() - start_time);
if (objective_value < result.objective_value) {
result.parameter = parameter;
result.objective_value = objective_value;
is_improving = true;
}
}
if (!is_improving) {
stepsize /= stepsize_decrease;
}
}
return result;
//.........这里部分代码省略.........
开发者ID:SebastianNiemann,项目名称:Mantella,代码行数:101,代码来源:hooke_jeeves_algorithm.hpp
示例13:
const_reference operator[](size_type pos) const noexcept
{ return *(cbegin() + pos); }
开发者ID:krinkinmu,项目名称:different-cpp-stuff,代码行数:2,代码来源:fixed_vector.hpp
示例14: rcend
const_reverse_iterator rcend() const noexcept
{ return const_reverse_iterator(cbegin()); }
开发者ID:krinkinmu,项目名称:different-cpp-stuff,代码行数:2,代码来源:fixed_vector.hpp
示例15: cbegin
IDX operator[](size_t i) const { return cbegin()[i]; }
开发者ID:gmarcais,项目名称:mummer,代码行数:1,代码来源:48bit_index.hpp
示例16: nodes
const WayNodeList& nodes() const {
return osmium::detail::subitem_of_type<const WayNodeList>(cbegin(), cend());
}
开发者ID:Gozhack,项目名称:osrm-backend,代码行数:3,代码来源:way.hpp
示例17: cbegin
cell_vector::const_iterator cell_vector::begin() const
{
return cbegin();
}
开发者ID:topillar,项目名称:xlnt,代码行数:4,代码来源:cell_vector.cpp
示例18: cend
std::string String::str() const {
return std::string(cbegin(), cend());
}
开发者ID:atlas1017,项目名称:Cpp-Primer-5th-Exercises,代码行数:3,代码来源:String.cpp
示例19: cend
// Returns a random access (contiguous) iterator pointing to the end of
// the compilation output. It is valid for the lifetime of this object.
// If there is no compilation result, then returns nullptr.
const_iterator cend() const {
if (!compilation_result_) return nullptr;
return cbegin() +
shaderc_result_get_length(compilation_result_) /
sizeof(OutputElementType);
}
开发者ID:KHeresy,项目名称:openvr,代码行数:9,代码来源:shaderc.hpp
示例20: visit
void visit(const Structure* structure) {
Assert(isTheoryOpen());
printTab();
output() << "Data: " << '\n';
indent();
auto voc = structure->vocabulary();
for (auto it = voc->firstSort(); it != voc->lastSort(); ++it) {
auto s = it->second;
if (not s->builtin()) {
printTab();
auto name = s->name();
name = capitalize(name);
output() << name << " = ";
auto st = structure->inter(s);
visit(st);
output() << '\n';
}
}
for (auto it = voc->firstPred(); it != voc->lastPred(); ++it) {
auto sp = it->second->nonbuiltins();
for (auto jt = sp.cbegin(); jt != sp.cend(); ++jt) {
auto p = *jt;
if (p->arity() == 1 && p->sorts()[0]->pred() == p) { // If it is in fact a sort, ignore it
continue;
}
auto pi = structure->inter(p);
if (pi->ct()->size() == 0 && pi->cf()->size() == 0) {
continue;
}
if (not pi->approxTwoValued()) {
output() << "Partial: " << '\n'; //TEMPORARY GO TO PARTIAL BLOCK
}
printTab();
auto name = p->nameNoArity();
name = capitalize(name);
output() << name << " = ";
visit(pi->ct());
if (not pi->approxTwoValued()) {
visit(pi->cf());
output() << '\n';
output() << "Data: "; //RETURN TO DATA BLOCK
}
output() << '\n';
}
}
for (auto it = voc->firstFunc(); it != voc->lastFunc(); ++it) {
auto sf = it->second->nonbuiltins();
for (auto jt = sf.cbegin(); jt != sf.cend(); ++jt) {
auto f = *jt;
auto fi = structure->inter(f);
if (fi->approxTwoValued()) {
printTab();
auto name = f->nameNoArity();
name = capitalize(name);
output() << name << " = ";
auto ft = fi->funcTable();
visit(ft);
} else {
auto pi = fi->graphInter();
auto ct = pi->ct();
auto cf = pi->cf();
if (ct->approxEmpty() && cf->approxEmpty()) {
continue;
}
output() << "Partial: " << '\n'; //TEMPORARY GO TO PARTIAL BLOCK
printTab();
auto name = f->nameNoArity();
name = capitalize(name);
output() << name << " = ";
printAsFunc(ct);
printAsFunc(cf);
output() << '\n';
output() << "Data: "; //RETURN TO DATA BLOCK
}
output() << '\n';
}
}
unindent();
output() << '\n';
}
开发者ID:KULeuven-KRR,项目名称:IDP,代码行数:82,代码来源:idp2printer.hpp
注:本文中的cbegin函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论