Rob*_*uld 12 c++ literate-programming
正如大多数程序员所钦佩并尝试遵循Literate编程的原则,但在C++中,我经常发现自己使用std::pair了大量的常见任务.但是std::pair,恕我直言,文学节目的邪恶敌人......
我的观点是,当我回到我一两天前编写的代码时,我看到一个std::pair(通常作为迭代器)的操作我不知道" 什么做了iter->第一个和iter->第二个意思? ? "
我猜其他人在查看他们的std::pair代码时有同样的疑虑,所以我想知道,有没有人想出一些好的解决方案来恢复识字时使用std::pair?
Ale*_*lli 17
std::pair是一个很好的方法来制作一个基本上匿名列的"本地"和基本上匿名的类型; 如果你在一个如此大的词汇空间上使用某个对,你需要命名类型和列,我会使用普通的struct.
这个怎么样:
struct MyPair : public std::pair < int, std::string >
{
const int& keyInt() { return first; }
void keyInt( const int& keyInt ) { first = keyInt; }
const std::string& valueString() { return second; }
void valueString( const std::string& valueString ) { second = valueString; }
};
Run Code Online (Sandbox Code Playgroud)
它有点冗长,但在代码中使用它可能会使事情更容易阅读,例如:
std::vector < MyPair > listPairs;
std::vector < MyPair >::iterator iterPair( listPairs.begin() );
if ( iterPair->keyInt() == 123 )
iterPair->valueString( "hello" );
Run Code Online (Sandbox Code Playgroud)
除此之外,我看不到任何可以让事情变得更加清晰的银弹.