本文整理汇总了C++中std::forward_list类的典型用法代码示例。如果您正苦于以下问题:C++ forward_list类的具体用法?C++ forward_list怎么用?C++ forward_list使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了forward_list类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: map
std::forward_list<B> map (std::function<B(A)> f, const std::forward_list<A>& L)
{
std::forward_list<B> H;
std::transform(L.begin(), L.end(), std::front_inserter(H), f);
H.reverse();
return H;
}
开发者ID:fons,项目名称:presentations,代码行数:7,代码来源:trans.cpp
示例2: foldr_dest
U foldr_dest(std::function< U (U, T)>& op, const U& val, std::forward_list<T>& L)
{
if (L.empty()) return U(val);
T h = L.front();
L.pop_front();
return op (foldr(op, val, L), h);
}
开发者ID:fons,项目名称:presentations,代码行数:7,代码来源:fold.cpp
示例3: extract
static void extract(const jsonpack::value &v, char* json_ptr, std::forward_list<T> &value)
{
array_t arr = *v._arr;
value.clear();
for(const auto &it : arr)
{
#ifndef _MSC_VER
// Initialize before use
T val = {};
#else
T val;
#endif
if( json_traits<T&>::match_token_type(it) )
{
json_traits<T&>::extract(it, json_ptr, val);
// forward_list not support insert operation
value.push_front(val);
}
else
{
throw type_error( "Forward_list item type mismatch" );
}
}
}
开发者ID:kylemanna,项目名称:jsonpack,代码行数:27,代码来源:sequences.hpp
示例4: removeDupsNoBuffer
void removeDupsNoBuffer(std::forward_list<int>& l) {
if (l.empty())
return;
auto backtrack = l.before_begin();
while (std::next(backtrack) != l.end()) {
// Iterate and print values of the list
for (int n : l)
std::cout << n << '\t';
std::cout << std::endl;
auto prev = std::next(backtrack);
auto iter = std::next(prev);
//std::cout << " prev =" << *prev << ", iter=" << *iter << std::endl;
while (iter != l.end()) {
if (*iter == *std::next(backtrack))
iter = l.erase_after(prev);
else {
++prev;
++iter;
}
}
++backtrack;
}
}
开发者ID:YuryChebiryak,项目名称:CCI,代码行数:25,代码来源:main.cpp
示例5: removeDups
void removeDups(std::forward_list<int>& l) {
l.sort();
for (int n : l)
std::cout << n << '\t';
std::cout << std::endl;
l.unique();
}
开发者ID:YuryChebiryak,项目名称:CCI,代码行数:7,代码来源:main.cpp
示例6: collection_load_impl
typename boost::disable_if<
typename detail::is_default_constructible<
typename std::forward_list<T, Allocator>::value_type
>,
void
>::type
collection_load_impl(
Archive & ar,
std::forward_list<T, Allocator> &t,
collection_size_type count,
item_version_type item_version
){
t.clear();
boost::serialization::detail::stack_construct<Archive, T> u(ar, item_version);
ar >> boost::serialization::make_nvp("item", u.reference());
t.push_front(u.reference());
typename std::forward_list<T, Allocator>::iterator last;
last = t.begin();
ar.reset_object_address(&(*t.begin()) , & u.reference());
while(--count > 0){
detail::stack_construct<Archive, T> u(ar, item_version);
ar >> boost::serialization::make_nvp("item", u.reference());
last = t.insert_after(last, u.reference());
ar.reset_object_address(&(*last) , & u.reference());
}
}
开发者ID:LancelotGHX,项目名称:Simula,代码行数:26,代码来源:forward_list.hpp
示例7: SendMediaList
void AudioStreamingServer::SendMediaList(const std::shared_ptr<ISocket>& clientSocket, const std::string& keyword, const std::string& hostName) const {
const std::forward_list<const std::string*> files = audioLibrary->Search(keyword);
std::vector<std::string> urls;
urls.reserve(std::distance(files.begin(), files.end()));
int responseSize = 0;
for(const std::string* file : files) {
std::string encodedFile = urlCodec->EncodeURL(*file);
std::string url;
url.reserve(hostName.length() + encodedFile.length() + 9); //account 2 for '/', '\n' and 7 for 'http://'
url += "http://";
url += hostName;
url += '/';
url += encodedFile;
url += '\n';
responseSize += url.length();
urls.push_back(std::move(url));
}
HttpResponse response(HTTP_1_1, OK, M3U, responseSize, keyword + ".m3u");
SendResponseHeader(clientSocket, response);
for(const std::string& url : urls) {
clientSocket->Send(url.c_str(), url.size());
}
}
开发者ID:commshare,项目名称:saudio,代码行数:26,代码来源:AudioStreamingServer.cpp
示例8: zip
std::forward_list<std::tuple<A,B>> zip (const std::forward_list<A>& L, const std::forward_list<B>& M)
{
std::forward_list<std::tuple<A,B>> H;
auto zipper = [] (const A& a, const B& b) {return std::make_tuple(a,b);};
std::transform(L.begin(), L.end(), M.begin(), std::front_inserter(H), zipper);
H.reverse();
return H;
}
开发者ID:fons,项目名称:presentations,代码行数:8,代码来源:trans.cpp
示例9:
void
TraialPool::return_traials(std::forward_list< Reference< Traial > >& list)
{
for (auto it = list.begin() ; it != list.end() ; it = list.begin()) {
available_traials_.push_front(*it);
list.pop_front(); // 'it' got invalidated
}
}
开发者ID:raulmonti,项目名称:FIG,代码行数:8,代码来源:TraialPool.cpp
示例10: iReturn
int iReturn(std::forward_list<int> l, int n){
int k = 0;
for(auto i = l.begin(); i != l.end(); ++i){
if(++k == std::distance(l.begin(), l.end()) - n + 1)
return *i;
}
}
开发者ID:rand0wn,项目名称:ask-dsa,代码行数:9,代码来源:Nnode.cpp
示例11: startAutoWalk
void Creature::startAutoWalk(const std::forward_list<Direction>& listDir)
{
listWalkDir = listDir;
size_t size = 0;
for (auto it = listDir.begin(); it != listDir.end() && size <= 1; ++it) {
size++;
}
addEventWalk(size == 1);
}
开发者ID:A-Syntax,项目名称:forgottenserver,代码行数:10,代码来源:creature.cpp
示例12: TEST
TEST(std_forward_list, clear) {
std::forward_list<int> l1{0, 0, 0, 0};
const std::forward_list<int> l2{1, 2, 3};
l1.clear();
ASSERT_TRUE(l1.begin() == l1.end());
l1.insert_after(l1.before_begin(), l2.begin(), l2.end());
ASSERT_TRUE(l1 == l2);
}
开发者ID:ChrisCummins,项目名称:phd,代码行数:10,代码来源:forward_list.cpp
示例13: iReverse
//Iterative
void iReverse(std::forward_list<int> &l){
std::forward_list<int> s = l, r;
for(auto i = l.begin(); i != l.end(); ++i) //Iterate, pop and push into r
{
r.push_front(s.front());
s.pop_front();
}
l = r; //Assign s to l
}
开发者ID:rand0wn,项目名称:ask-dsa,代码行数:12,代码来源:reverseLL.cpp
示例14: save
inline void save(
Archive & ar,
const std::forward_list<U, Allocator> &t,
const unsigned int file_version
){
const collection_size_type count(std::distance(t.cbegin(), t.cend()));
boost::serialization::stl::save_collection<
Archive,
std::forward_list<U, Allocator>
>(ar, t, count);
}
开发者ID:imos,项目名称:icfpc2015,代码行数:11,代码来源:forward_list.hpp
示例15: f_forward_list
void f_forward_list() {
std::forward_list<int> C;
std::forward_list<int>::iterator FListI1 = C.begin();
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use auto when declaring iterators
// CHECK-FIXES: auto FListI1 = C.begin();
const std::forward_list<int> D;
std::forward_list<int>::const_iterator FListI2 = D.begin();
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use auto when declaring iterators
// CHECK-FIXES: auto FListI2 = D.begin();
}
开发者ID:GameFusion,项目名称:clang-tools-extra,代码行数:11,代码来源:modernize-use-auto-iterator.cpp
示例16: add_connected_gates
void add_connected_gates(int gate, std::forward_list<int>& gates)
{
for(size_t i = 0; i < channels.size(); ++i) {
if(channels[i][0] == gate)
gates.push_front(channels[i][1]);
if(channels[i][1] == gate)
gates.push_front(channels[i][0]);
}
}
开发者ID:ny-c,项目名称:ce,代码行数:11,代码来源:humandesign.cpp
示例17: InsertString
void InsertString(std::forward_list<std::string> &s, const std::string &s1, const std::string &s2)
{
std::forward_list<std::string>::iterator a, prev = s.before_begin();
for (a = s.begin(); a != s.end(); ++a, ++prev) {
if (*a == s1) {
s.insert_after(a, s2);
return;
}
}
s.insert_after(prev, s2);
}
开发者ID:Jungzhang,项目名称:cPlusPlus,代码行数:12,代码来源:9_28.cpp
示例18: detectLoop
int detectLoop(std::forward_list<int> l){
auto p1 = l.begin(), p2 = l.begin(); //Initialise two pointers to head
while(p1 != l.end() && p2 != l.end() && std::next(p2, 1) != l.end()){ //Move p1 by 1 and p2 by 2 positions
if(*(++p1) == *(++(++p2))){ //Element p1 and p2 are equal -> loop
return 1;
}
}
return 0;
}
开发者ID:rand0wn,项目名称:ask-dsa,代码行数:12,代码来源:loopDetect.cpp
示例19: pReturn
//Using two pointers
int pReturn(std::forward_list<int> l, int n){
auto i1 = l.begin(), i2 = l.begin();
std::advance(i1, n); //Move iterator to n places
while(i1 != l.end()){
++i1;
++i2;
}
return *i2;
}
开发者ID:rand0wn,项目名称:ask-dsa,代码行数:14,代码来源:Nnode.cpp
示例20: CEREAL_SAVE_FUNCTION_NAME
inline
void CEREAL_SAVE_FUNCTION_NAME(Archive &ar, std::forward_list<T, A> const &forward_list) {
// write the size - note that this is slow because we need to traverse
// the entire list. there are ways we could avoid this but this was chosen
// since it works in the most general fashion with any archive type
size_type const size = std::distance(forward_list.begin(), forward_list.end());
ar(make_size_tag(size));
// write the list
for (const auto &i : forward_list)
ar(i);
}
开发者ID:Cultrarius,项目名称:QuestWeaver,代码行数:13,代码来源:forward_list.hpp
注:本文中的std::forward_list类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论