天道酬勤,学无止境

std

How to find the depth of each node in std::map?

If I construct, my own binary tree, then I can find the depth of each node. The sample code is as follows template<class datatype> void binary_node<datatype>::printNodeWithDepth(int currentNodeDepth) { if ( left ) left->printNodeWithDepth(currentNodeDepth+1); std::cout << value << " and the depth is " << currentNodeDepth << std::endl; if ( right) right->printNodeWithDepth(currentNodeDepth+1); } But wondering, since map is a b-tree, is it possible to write something similar to this for a std::map?

2021-09-25 15:09:35    分类:问答    c++   dictionary   std   stdmap   c++-standard-library

Vector from long hex value

In C++ I can initialize a vector using std::vector<uint8_t> data = {0x01, 0x02, 0x03}; For convenience (I have python byte strings that naturally output in a dump of hex), I would like to initialize for a non-delimited hex value of the form: std::vector<uint8_t> data = 0x229597354972973aabbe7; Is there a variant of this that is valid c++?

2021-09-25 07:54:12    分类:问答    c++   hex   std

std::insert_iterator and iterator invalidation

I tried writing a generic, in place, intersperse function. The function should intersperse a given element into a sequence of elements. #include <vector> #include <list> #include <algorithm> #include <iostream> template<typename ForwardIterator, typename InserterFunc> void intersperse(ForwardIterator begin, ForwardIterator end, InserterFunc ins, // we cannot use rvalue references here, // maybe taking by value and letting users feed in std::ref would be smarter const ForwardIterator::value_type& elem) { if(begin == end) return; while(++begin != end) { // bugfix would be something like: //

2021-09-24 07:36:01    分类:问答    c++   std   generic-programming

是否可以设置 std::tr1::tuple 的默认值?(is it possible to set the default value of std::tr1::tuple?)

问题 (我使用的是 Visual C++ 2010)假设我已经定义了一个这样的元组: typedef std::tr1::tuple< int //i want to set its default value to 9 , double //i want to set its default value to 3.3 , int //i want to set its default value to 2 , double //i want to set its default value to -7.2 > Mytuple; 我可以在结构中做到这一点。 但我想知道是否可以在std::tr1::tuple做到这一点。 此外,我想知道什么时候应该使用std::tr1:tuple或struct? 任何人都可以帮助我吗? 回答1 tuple不是结构的神奇替代品。 他们的目的非常不同。 结构首先是一种语言结构。 tuple是一个库结构。 结构具有默认值,因为该语言说您可以编写构造函数来为它们提供默认值。 然后语言负责调用该构造函数来初始化结构。 tuple作为一个库结构,没有这样的功能,就像你可以给std::vector<T>一个它总是自动使用的默认T 。 您可以为每个成员提供初始值,但不能为其提供defaults 。 如果你考虑一下,你就不会想要。 想象一下

2021-09-24 03:46:04    分类:技术分享    c++   visual-studio-2010   visual-c++   c++11   std

是否可以设置 std::tr1::tuple 的默认值?(is it possible to set the default value of std::tr1::tuple?)

问题 (我使用的是 Visual C++ 2010)假设我已经定义了一个这样的元组: typedef std::tr1::tuple< int //i want to set its default value to 9 , double //i want to set its default value to 3.3 , int //i want to set its default value to 2 , double //i want to set its default value to -7.2 > Mytuple; 我可以在结构中做到这一点。 但我想知道是否可以在std::tr1::tuple做到这一点。 此外,我想知道什么时候应该使用std::tr1:tuple或struct? 任何人都可以帮助我吗? 回答1 tuple不是结构的神奇替代品。 他们的目的非常不同。 结构首先是一种语言结构。 tuple是一个库结构。 结构具有默认值,因为该语言说您可以编写构造函数来为它们提供默认值。 然后语言负责调用该构造函数来初始化结构。 tuple作为一个库结构,没有这样的功能,就像你可以给std::vector<T>一个它总是自动使用的默认T 。 您可以为每个成员提供初始值,但不能为其提供defaults 。 如果你考虑一下,你就不会想要。 想象一下

2021-09-24 03:44:04    分类:技术分享    c++   visual-studio-2010   visual-c++   c++11   std

是否可以设置 std::tr1::tuple 的默认值?(is it possible to set the default value of std::tr1::tuple?)

问题 (我使用的是 Visual C++ 2010)假设我已经定义了一个这样的元组: typedef std::tr1::tuple< int //i want to set its default value to 9 , double //i want to set its default value to 3.3 , int //i want to set its default value to 2 , double //i want to set its default value to -7.2 > Mytuple; 我可以在结构中做到这一点。 但我想知道是否可以在std::tr1::tuple做到这一点。 此外,我想知道什么时候应该使用std::tr1:tuple或struct? 任何人都可以帮助我吗? 回答1 tuple不是结构的神奇替代品。 他们的目的非常不同。 结构首先是一种语言结构。 tuple是一个库结构。 结构具有默认值,因为该语言说您可以编写构造函数来为它们提供默认值。 然后语言负责调用该构造函数来初始化结构。 tuple作为一个库结构,没有这样的功能,就像你可以给std::vector<T>一个它总是自动使用的默认T 。 您可以为每个成员提供初始值,但不能为其提供defaults 。 如果你考虑一下,你就不会想要。 想象一下

2021-09-24 03:42:26    分类:技术分享    c++   visual-studio-2010   visual-c++   c++11   std

如何从`std::istream`加载XML文档?(How to load XML document from `std::istream`?)

问题 我想从std::istream加载 TinyXml 文档,但它不包含这样的方法: /** Load a file using the current document value. Returns true if successful. Will delete any existing document data before loading. */ bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /// Save a file using the current document value. Returns true if successful. bool SaveFile() const; /// Load a file using the given filename. Returns true if successful. bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /// Save a file using the given filename. Returns true if successful. bool SaveFile( const

2021-09-24 03:11:27    分类:技术分享    c++   std   tinyxml

How to load XML document from `std::istream`?

I'd like to load TinyXml documents from std::istream, but it doesn't contain such method: /** Load a file using the current document value. Returns true if successful. Will delete any existing document data before loading. */ bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /// Save a file using the current document value. Returns true if successful. bool SaveFile() const; /// Load a file using the given filename. Returns true if successful. bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); /// Save a file using the given filename

2021-09-24 00:49:23    分类:问答    c++   std   tinyxml

is it possible to set the default value of std::tr1::tuple?

(i'm using Visual C+++ 2010) suppose i have defined a tuple like this: typedef std::tr1::tuple< int //i want to set its default value to 9 , double //i want to set its default value to 3.3 , int //i want to set its default value to 2 , double //i want to set its default value to -7.2 > Mytuple; i can do that in a struct. but i wonder if it is possible to do that in std::tr1::tuple. Besides, i want to know when shoud i use std::tr1:tuple or struct? anyone can help me?

2021-09-23 20:47:48    分类:问答    c++   visual-studio-2010   visual-c++   c++11   std

std::addressof - 奇怪的实现(std::addressof - strange implementation)

问题 所以几天前我了解了 std::addressof 。 在 http://en.cppreference.com/w/cpp/memory/addressof 给出了一个可能的实现: template< class T > T* addressof(T& arg) { return reinterpret_cast<T*>( &const_cast<char&>( reinterpret_cast<const volatile char&>(arg))); } 据我所知,这可以简单地实现如下: template<typename T> T* addressof( T& var ) { return &var; } 为什么 cppreference 的人选择用 3 个强制转换来实现它? 是否有任何我遗漏的细节使他们的实施更好。 当您所做的只是强制转换时,使用 volatile 有什么意义? 回答1 如果它可以像您的示例中那样实现,则不需要它。 关键是它为您提供了对象的地址,即使该类型的operator&的地址已重载。

2021-09-23 15:19:45    分类:技术分享    c++   std