本文整理汇总了C++中std::set::cbegin方法的典型用法代码示例。如果您正苦于以下问题:C++ set::cbegin方法的具体用法?C++ set::cbegin怎么用?C++ set::cbegin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类std::set
的用法示例。
在下文中一共展示了set::cbegin方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetSingle
int IntSet::GetSingle() const
{
if (!m_set.empty())
{
return *m_set.cbegin();
}
return 0;
}
示例2: read_regions
bool IndexPartitionIO::read_regions(const std::set< region_id_t > ®ions_to_read, std::map< region_id_t, boost::shared_ptr< RegionEncoding > > ®ions) {
// Validate all regions to read
const region_count_t num_regions = get_num_regions();
for (auto it = regions_to_read.cbegin(); it != regions_to_read.cend(); it++) {
const region_id_t region = *it;
if (region >= num_regions)
return false;
}
// Read the missing bins, fail if this fails
return read_regions_impl(regions_to_read, regions);
}
示例3: RefreshBlackList
void BlackListWindow::RefreshBlackList()
{
m_black_list->RemoveAll();
const std::set<std::string> black_list = MuteBlackService::GetInstance()->GetBlackList();
std::list<std::string> account_list(black_list.cbegin(), black_list.cend());
std::list<nim::UserNameCard> uinfos;
UserService::GetInstance()->GetUserInfos(account_list, uinfos);
for (auto iter = uinfos.cbegin(); iter != uinfos.cend(); iter++)
AddBlackListMember(*iter);
}
示例4: CollisionDetected
void Detector::CollisionDetected(const std::set<std::shared_ptr<IObject>>& i_objects)
{
std::for_each(i_objects.cbegin(), i_objects.cend(), [this](ObjectPtr i_object)
{
if (typeid(*i_object.get()) == typeid(Ray))
{
m_detector_state = DetectorState::DS_Active;
m_elapsed_time = 0;
m_body_color = Color(250, 0, 0, 250);
}
});
}
示例5: factors
std::map<T,std::size_t> factors(T n, const std::set<T> & p)
{
std::map<T,std::size_t> f;
auto bound = std::sqrt(n) + 1;
for (auto i = p.cbegin(); (i != p.cend()) || (*i > bound); ++i) {
const auto prime = *i;
std::size_t order = 0;
for (auto d = n; (d % prime) == 0; d /= prime) {
++order;
}
if (order) {
f[prime] = order;
}
}
return f;
}
示例6: addObjects
void addObjects(std::set<unsigned long> set) { m_objects.insert(set.cbegin(), set.cend()); }
示例7: main
int main()
{
{
typedef int V;
V ar[] =
{
1,
1,
1,
2,
2,
2,
3,
3,
3,
4,
4,
4,
5,
5,
5,
6,
6,
6,
7,
7,
7,
8,
8,
8
};
std::set<int> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
assert(std::distance(m.begin(), m.end()) == m.size());
assert(std::distance(m.rbegin(), m.rend()) == m.size());
std::set<int>::iterator i;
i = m.begin();
std::set<int>::const_iterator k = i;
assert(i == k);
for (int j = 1; j <= m.size(); ++j, ++i)
assert(*i == j);
}
{
typedef int V;
V ar[] =
{
1,
1,
1,
2,
2,
2,
3,
3,
3,
4,
4,
4,
5,
5,
5,
6,
6,
6,
7,
7,
7,
8,
8,
8
};
const std::set<int> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
assert(std::distance(m.begin(), m.end()) == m.size());
assert(std::distance(m.cbegin(), m.cend()) == m.size());
assert(std::distance(m.rbegin(), m.rend()) == m.size());
assert(std::distance(m.crbegin(), m.crend()) == m.size());
std::set<int>::const_iterator i;
i = m.begin();
for (int j = 1; j <= m.size(); ++j, ++i)
assert(*i == j);
}
#if TEST_STD_VER >= 11
{
typedef int V;
V ar[] =
{
1,
1,
1,
2,
2,
2,
3,
3,
3,
4,
4,
4,
5,
5,
5,
//.........这里部分代码省略.........
示例8: computeEigenVectors
template <typename PointInT, typename PointOutT> void
pcl::ROPSEstimation <PointInT, PointOutT>::computeLRF (const PointInT& point, const std::set <unsigned int>& local_triangles, Eigen::Matrix3f& lrf_matrix) const
{
const unsigned int number_of_triangles = static_cast <unsigned int> (local_triangles.size ());
std::vector<Eigen::Matrix3f, Eigen::aligned_allocator<Eigen::Matrix3f> > scatter_matrices (number_of_triangles);
std::vector <float> triangle_area (number_of_triangles);
std::vector <float> distance_weight (number_of_triangles);
float total_area = 0.0f;
const float coeff = 1.0f / 12.0f;
const float coeff_1_div_3 = 1.0f / 3.0f;
Eigen::Vector3f feature_point (point.x, point.y, point.z);
unsigned int i_triangle = 0;
for (auto it = local_triangles.cbegin (); it != local_triangles.cend (); it++, i_triangle++)
{
Eigen::Vector3f pt[3];
for (unsigned int i_vertex = 0; i_vertex < 3; i_vertex++)
{
const unsigned int index = triangles_[*it].vertices[i_vertex];
pt[i_vertex] (0) = surface_->points[index].x;
pt[i_vertex] (1) = surface_->points[index].y;
pt[i_vertex] (2) = surface_->points[index].z;
}
const float curr_area = ((pt[1] - pt[0]).cross (pt[2] - pt[0])).norm ();
triangle_area[i_triangle] = curr_area;
total_area += curr_area;
distance_weight[i_triangle] = std::pow (support_radius_ - (feature_point - (pt[0] + pt[1] + pt[2]) * coeff_1_div_3).norm (), 2.0f);
Eigen::Matrix3f curr_scatter_matrix;
curr_scatter_matrix.setZero ();
for (const auto &i_pt : pt)
{
Eigen::Vector3f vec = i_pt - feature_point;
curr_scatter_matrix += vec * (vec.transpose ());
for (const auto &j_pt : pt)
curr_scatter_matrix += vec * ((j_pt - feature_point).transpose ());
}
scatter_matrices[i_triangle] = coeff * curr_scatter_matrix;
}
if (std::abs (total_area) < std::numeric_limits <float>::epsilon ())
total_area = 1.0f / total_area;
else
total_area = 1.0f;
Eigen::Matrix3f overall_scatter_matrix;
overall_scatter_matrix.setZero ();
std::vector<float> total_weight (number_of_triangles);
const float denominator = 1.0f / 6.0f;
for (unsigned int i_triangle = 0; i_triangle < number_of_triangles; i_triangle++)
{
float factor = distance_weight[i_triangle] * triangle_area[i_triangle] * total_area;
overall_scatter_matrix += factor * scatter_matrices[i_triangle];
total_weight[i_triangle] = factor * denominator;
}
Eigen::Vector3f v1, v2, v3;
computeEigenVectors (overall_scatter_matrix, v1, v2, v3);
float h1 = 0.0f;
float h3 = 0.0f;
i_triangle = 0;
for (auto it = local_triangles.cbegin (); it != local_triangles.cend (); it++, i_triangle++)
{
Eigen::Vector3f pt[3];
for (unsigned int i_vertex = 0; i_vertex < 3; i_vertex++)
{
const unsigned int index = triangles_[*it].vertices[i_vertex];
pt[i_vertex] (0) = surface_->points[index].x;
pt[i_vertex] (1) = surface_->points[index].y;
pt[i_vertex] (2) = surface_->points[index].z;
}
float factor1 = 0.0f;
float factor3 = 0.0f;
for (const auto &i_pt : pt)
{
Eigen::Vector3f vec = i_pt - feature_point;
factor1 += vec.dot (v1);
factor3 += vec.dot (v3);
}
h1 += total_weight[i_triangle] * factor1;
h3 += total_weight[i_triangle] * factor3;
}
if (h1 < 0.0f) v1 = -v1;
if (h3 < 0.0f) v3 = -v3;
v2 = v3.cross (v1);
lrf_matrix.row (0) = v1;
lrf_matrix.row (1) = v2;
lrf_matrix.row (2) = v3;
}
示例9: getLinePoints
/** Obtain coordinates for a line plot through a MDWorkspace.
* Cross the workspace from start to end points, recording the signal along the
*lin at either bin boundaries, or halfway between bin boundaries (which is bin
*centres if the line is dimension aligned). If recording halfway values then
*omit points in masked bins.
*
* @param start :: coordinates of the start point of the line
* @param end :: coordinates of the end point of the line
* @param normalize :: how to normalize the signal
* @returns :: LinePlot with x as the boundaries of the bins, relative
* to start of the line, y set to the normalized signal for each bin with
* Length = length(x) - 1 and e as the error vector for each bin.
* @param bin_centres :: if true then record points halfway between bin
*boundaries, otherwise record on bin boundaries
*/
IMDWorkspace::LinePlot MDHistoWorkspace::getLinePoints(
const Mantid::Kernel::VMD &start, const Mantid::Kernel::VMD &end,
Mantid::API::MDNormalization normalize, const bool bin_centres) const {
LinePlot line;
size_t nd = this->getNumDims();
if (start.getNumDims() != nd)
throw std::runtime_error("Start point must have the same number of "
"dimensions as the workspace.");
if (end.getNumDims() != nd)
throw std::runtime_error(
"End point must have the same number of dimensions as the workspace.");
// Unit-vector of the direction
VMD dir = end - start;
const auto length = dir.normalize();
// Vector with +1 where direction is positive, -1 where negative
#define sgn(x) ((x < 0) ? -1.0f : ((x > 0.) ? 1.0f : 0.0f))
VMD dirSign(nd);
for (size_t d = 0; d < nd; d++) {
dirSign[d] = sgn(dir[d]);
}
const size_t BADINDEX = size_t(-1);
// Dimensions of the workspace
boost::scoped_array<size_t> index(new size_t[nd]);
boost::scoped_array<size_t> numBins(new size_t[nd]);
for (size_t d = 0; d < nd; d++) {
IMDDimension_const_sptr dim = this->getDimension(d);
index[d] = BADINDEX;
numBins[d] = dim->getNBins();
}
const std::set<coord_t> boundaries =
getBinBoundariesOnLine(start, end, nd, dir, length);
if (boundaries.empty()) {
this->makeSinglePointWithNaN(line.x, line.y, line.e);
// Require x.size() = y.size()+1 if recording bin boundaries
if (!bin_centres)
line.x.push_back(length);
return line;
} else {
// Get the first point
std::set<coord_t>::iterator it;
it = boundaries.cbegin();
coord_t lastLinePos = *it;
VMD lastPos = start + (dir * lastLinePos);
if (!bin_centres) {
line.x.push_back(lastLinePos);
}
++it;
coord_t linePos = 0;
for (; it != boundaries.cend(); ++it) {
// This is our current position along the line
linePos = *it;
// This is the full position at this boundary
VMD pos = start + (dir * linePos);
// Position in the middle of the bin
VMD middle = (pos + lastPos) * 0.5;
// Find the signal in this bin
const auto linearIndex =
this->getLinearIndexAtCoord(middle.getBareArray());
if (bin_centres && !this->getIsMaskedAt(linearIndex)) {
coord_t bin_centrePos =
static_cast<coord_t>((linePos + lastLinePos) * 0.5);
line.x.push_back(bin_centrePos);
} else if (!bin_centres)
line.x.push_back(linePos);
if (linearIndex < m_length) {
auto normalizer = getNormalizationFactor(normalize, linearIndex);
// And add the normalized signal/error to the list too
auto signal = this->getSignalAt(linearIndex) * normalizer;
if (boost::math::isinf(signal)) {
//.........这里部分代码省略.........
示例10: setValues
void KeyMultiValueTagFilter::setValues(const std::set<std::string> & values)
{
setValues(values.cbegin(), values.cend());
}
示例11: set_extruders
void set_extruders(const std::set<T> &extruder_ids) {
this->set_extruders(extruder_ids.cbegin(), extruder_ids.cend());
}
示例12: while
/**
* @brief Find the shared tracks between some images ids.
*
* @param[in] image_ids: images id to consider
* @param[out] tracks: tracks shared by the input images id
*/
bool GetTracksInImages
(
const std::set<uint32_t> & image_ids,
STLMAPTracks & tracks
)
{
tracks.clear();
if (image_ids.empty())
return false;
// Collect the shared tracks ids by the views
std::set<uint32_t> common_track_ids;
{
// Compute the intersection of all the track ids of the view's track ids.
// 1. Initialize the track_id with the view first tracks
// 2. Iteratively collect the common id of the remaining requested view
auto image_index_it = image_ids.cbegin();
if (track_ids_per_view_.count(*image_index_it))
{
common_track_ids = track_ids_per_view_[*image_index_it];
}
bool merged = false;
std::advance(image_index_it, 1);
while (image_index_it != image_ids.cend())
{
if (track_ids_per_view_.count(*image_index_it))
{
const auto ids_per_view_it = track_ids_per_view_.find(*image_index_it);
const auto & track_ids = ids_per_view_it->second;
std::set<uint32_t> tmp;
std::set_intersection(
common_track_ids.cbegin(), common_track_ids.cend(),
track_ids.cbegin(), track_ids.cend(),
std::inserter(tmp, tmp.begin()));
common_track_ids.swap(tmp);
merged = true;
}
std::advance(image_index_it, 1);
}
if (image_ids.size() > 1 && !merged)
{
// If more than one image id is required and no merge operation have been done
// we need to reset the common track id
common_track_ids.clear();
}
}
// Collect the selected {img id, feat id} data for the shared track ids
for (const auto track_ids_it : common_track_ids)
{
const auto track_it = tracks_.find(track_ids_it);
const auto & track = track_it->second;
// Find the corresponding output track and update it
submapTrack& trackFeatsOut = tracks[track_it->first];
for (const auto img_index: image_ids)
{
const auto track_view_info = track.find(img_index);
trackFeatsOut[img_index] = track_view_info->second;
}
}
return !tracks.empty();
}