将arg传递给一个不是"完全匹配"类型的函数但是通过简单或用户定义的转换到这种类型是不是一个糟糕的编程原则?例如:
void f(bool option);
Run Code Online (Sandbox Code Playgroud)
主要是后来的(这是非常假设的,所以请不要就该代码提出建议):
int a = getSomeValue();
f(a);//here instead of bool I'm passing int - is it a bad programming practice or not?
Run Code Online (Sandbox Code Playgroud) 是否有任何STL算法或标准方法来查找字符串中特定子串的出现次数?例如在字符串中:
'How do you do at ou'
Run Code Online (Sandbox Code Playgroud)
字符串"ou"出现两次.我尝试了一些带有和没有谓词的STL算法,但我发现STL的那些算法想要比较字符串的组件,在我的例子中是char但不能?比较子串.我想出这样的事情:
str - string
obj - 我们正在寻找的子串
std::string::size_type count_subs(const std::string& str, const std::string& obj)
{
std::string::const_iterator beg = str.begin();
std::string::const_iterator end = str.end();
std::string::size_type count = 0;
while ((beg + (obj.size() - 1)) != end)
{
std::string tmp(beg, beg + obj.size());
if (tmp == obj)
{
++count;
}
++beg;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我试着这样做:
int& g(int& number = 0)
{
//maybe do something with number
return number;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.它必须通过引用传递.感谢您的任何帮助.
PS我认为一旦你输入Title就出现"相关问题"是一个好主意,但我也认为只有当它们与特定语言相关时才应该显示它们,即对于我来说看待类似主题并不是没用的问题,但在Ruby中.
有一个形式的建筑:
struct Node
{
Node():left_(nullptr), right_(nullptr)
{ }
int id_;
Node* left_;
Node* right_;
};
Run Code Online (Sandbox Code Playgroud)
我想启用语法:
Node parent;
Node child;
parent.right_ = child;
Run Code Online (Sandbox Code Playgroud)
所以为了做到这一点,我需要:
Node& operator=(Node* left, Node right);
Run Code Online (Sandbox Code Playgroud)
但我得到的消息是,operator =必须是fnc的成员; 有没有办法绕过这个限制?
来自TC++ PL Bjarne的一个例外(ch.5,e.8)中的人要求做以下事情:
''运行一些测试,看看你的编译器是否真的使用指针生成等效的迭代代码并使用索引进行迭代.如果不同可以请求优化程度,看看是否以及如何影响生成代码的质量"'
知道如何吃它和什么?谢谢你的建议.
有没有办法在堆上获得以前分配的内存的大小?
例如:
//pseudo-code
void* p = operator new (sizeof(int) * 3);
unsigned size = getSomeHow(p);
Run Code Online (Sandbox Code Playgroud) 为什么这(从升级网站复制)给我一个错误?!在VS 2010旗舰版:
#include <boost\test\unit_test.hpp>
#define BOOST_TEST_MODULE MyTest
int add( int i, int j ) { return i+j; }
BOOST_AUTO_TEST_CASE( my_test )
{
// seven ways to detect and report the same error:
BOOST_CHECK( add( 2,2 ) == 4 ); // #1 continues on error
BOOST_REQUIRE( add( 2,2 ) == 4 ); // #2 throws on error
if( add( 2,2 ) != 4 )
BOOST_ERROR( "Ouch..." ); // #3 continues on error
if( add( 2,2 ) != 4 ) …Run Code Online (Sandbox Code Playgroud) 为什么这个(char在我的实现上签名):
cout << std::is_same< char,signed char>::value;
输出错误?
怎么可能"分裂"即长长型,所以它的第一部分是长型的变种而第二部分也是长型的变种.
long long long_type = 0xaaaabbbbccccdddd;
Run Code Online (Sandbox Code Playgroud)
并且在第一个int中我想要long_type var的前半部分(从哪一侧无关紧要)和第二个var int的后半部分.