Why is the C++ STL is so heavily based on templates? (and not on *interfaces*)

I mean, aside from its obligating name (the Standard Template Library)... C++ initially intended to present OOP concepts into C. That is: you could tell what a specific entity could and couldn't do (regardless of how it does it) based on its class and class hierarchy. Some compositions of abilities are more difficult to describe in this manner due to the problematics of multiple inheritanc

为什么C ++ STL如此严重地基于模板? (而不是*接口*)

我的意思是,除了它的义务名称(标准模板库)... C ++最初的目的是将OOP概念呈现给C语言。那就是:你可以根据它的类和类层次结构来告诉特定实体可以做什么以及不可以做什么(不管它是怎么做的)。 由于多重继承的问题,一些能力组合更难以描述,而C ++支持接口的概念有点笨拙(与java等相比),但它在那里(可能是改善)。 然后模板和STL一起发挥作用。 STL似乎采用了传统的OOP概念,并使用模板代替,将它们冲淡。 应该

What are good alternatives to "using namespace std;"?

This question already has an answer here: Why is “using namespace std” considered bad practice? 35 answers The main alternatives to bringing in everything from the std namespace into the global one with using namespace std; at global scope are: Only bring in the actual names you need. For example just bring in vector with using std::vector; Always use explicit namespace qualifications

“使用名称空间标准”有什么好的选择?

这个问题在这里已经有了答案: 为什么“使用名称空间标准”被认为是不好的做法? 35个答案 using namespace std;引入std命名空间到全局命令空间的所有主要选择using namespace std; 在全球范围内是: 只需带上您需要的实际名称。 例如刚刚引进vector与using std::vector; 在使用名称时始终使用显式名称空间限定。 例如std::vector<int> v; (在标题中,这几乎总是你做的唯一事情) 引入所有名称,但缩小范围

redefinition of 'WhatEver' as different kind of symbol

This question already has an answer here: Why is “using namespace std” considered bad practice? 35 answers 检查string和shared_ptr声明,并尝试指定命名空间为他们(替换shared_ptr使用boost::shared_ptr或std::shared_ptr ),以确保同一个类中声明和实现中使用ToString 。

将'WhatEver'重新定义为不同类型的符号

这个问题在这里已经有了答案: 为什么“使用名称空间标准”被认为是不好的做法? 35个答案 检查string和shared_ptr声明,并尝试指定命名空间为他们(替换shared_ptr使用boost::shared_ptr或std::shared_ptr ),以确保同一个类中声明和实现中使用ToString 。

"using" or explicitly stated?

Possible Duplicates: Why is 'using namespace std;' considered a bad practice in C++? Using std Namespace Is it just a matter of preference? Or is there a valid reason for preferring using namespace std; #include <string> myString string; or #include <string> myString std::string; I suppose that explicitly stating the namespace each time, while a drag to type, avoid

“使用”还是明确说明?

可能重复: 为什么'使用名称空间标准;' 在C ++中被认为是不好的做法? 使用std命名空间 这只是一个偏好问题吗? 或者是否有更好的理由 using namespace std; #include <string> myString string; 要么 #include <string> myString std::string; 我想,每次显式声明命名空间,而拖动类型,避免名称冲突的任何可能性(或编译器会警告含糊不清?) 问题:这种或那种方式是否有令人信服的论点?

Using namespace std vs other alternatives

This question already has an answer here: Why is “using namespace std” considered bad practice? 35 answers This is really one of those things that you can discuss over beer for hours and hours, and still not have an answer everyone is happy with. If you are nearly always using std:: functionality, then adding using namespace std; at the beginning of the file is not that bad an idea. On t

使用命名空间std vs其他选择

这个问题在这里已经有了答案: 为什么“使用名称空间标准”被认为是不好的做法? 35个答案 这实际上是你可以在几小时和几小时内就啤酒进行讨论的事情之一,但仍然没有一个人人都满意的答案。 如果你几乎总是使用std:: functional,那么using namespace std; 在文件的开头并不是一个坏主意。 另一方面,如果你正在使用来自多个命名空间的东西(例如,使用llvm::编写一个编译器并使用std:: ,则可能会混淆哪些部分是llvm一

ptr ambiguity? (stl vs boost)

Possible Duplicate: Why is 'using namespace std;' considered a bad practice in C++? I've used stl 's shared_ptr many places in my code and I have used the following using statement anywhere that I have used shared_ptr : using namespace std::tr1; Now I need to use boost::bimap . So I have to include the following header file in my code: #include <boost/bimap.hpp> As

ptr含糊不清? (stl vs boost)

可能重复: 为什么'使用名称空间标准;' 在C ++中被认为是不好的做法? 我在我的代码中使用了stl的shared_ptr很多地方,并且我使用了以下using shared_ptr using语句: using namespace std::tr1; 现在我需要使用boost::bimap 。 所以我必须在我的代码中包含以下头文件: #include <boost/bimap.hpp> 只要我包含bimap头文件, shared_ptr类型变得模糊不清,我必须将shared_ptr所有用法更改为std::tr1::sh

C++: Questions about using namespace std and cout

This question already has an answer here: Why is “using namespace std” considered bad practice? 35 answers cout is a global object defined in the std namespace, and endl is a (stream manipulator) function also defined in the std namespace. If you take no action to import their names into the global namespace, you won't be able to refer to them with the unqualified identifiers cout and

C ++:有关使用名称空间std和cout的问题

这个问题在这里已经有了答案: 为什么“使用名称空间标准”被认为是不好的做法? 35个答案 cout是std命名空间中定义的全局对象, endl是std命名空间中也定义的(流操纵器)函数。 如果您不采取任何措施将其名称导入到全局名称空间中,那么您将无法使用未限定的标识符cout和endl来引用它们。 您必须使用完全限定的名称: std::cout << "Hello, World!" << std::endl; 基本上, using namespace std功能是将st

Is using namespace..like bad?

Possible Duplicate: Why is 'using namespace std;' considered a bad practice in C++? Every time I use using namespace std I always get that "thats a terrible programming habit". Now I'm graduating this December with my BS in CS but I don't claim to know everything, but no one has ever explained why this is so bad. I understand what it does but I honestly don't

是使用命名空间..就像坏?

可能重复: 为什么'使用名称空间标准;' 在C ++中被认为是不好的做法? 每次我使用using namespace std我总是得到那个“这是一个可怕的编程习惯”。 现在我在十二月与我的学士学位毕业,但我并没有声称知道一切,但没有人解释过为什么这么糟糕。 我明白它的作用,但我真的没有看到它的巨大交易。 任何人都在意解释? 在我看来,它只是让输入cout比std::cout更能承受。 我可以理解为什么你不想把它放在一个头文

std::string vs string in c++

Possible Duplicates: Why is 'using namespace std;' considered a bad practice in C++? Using std Namespace Ive been hovering around a bunch of different forums and i seem to see this pop up every time and again. Its a very much beginner question. I usually define a program with #include<string> using namespace std; string x; I see a bunch of code samples out there who def

std :: string vs c ++中的字符串

可能重复: 为什么'使用名称空间标准;' 在C ++中被认为是不好的做法? 使用std命名空间 我一直在一堆不同的论坛上徘徊,我似乎每次都会看到这个弹出窗口。 这是一个非常初学者的问题。 我通常用一个程序来定义 #include<string> using namespace std; string x; 我看到一堆代码样本,它们将字符串定义为 std::string. 这样做的目的是什么? 它是好的做法还是具有一些功能? 正如其他答案已经表

What is the use of "using namespace std"?

This question already has an answer here: Why is “using namespace std” considered bad practice? 35 answers Using std Namespace 15 answers using : You are going to use it namespace : To use what? A namespace std : The std namespace (where features of the C++ Standard Library, such as string or vector , are declared). After you write this instruction, if the compiler sees string it wi

“使用命名空间标准”有什么用处?

这个问题在这里已经有了答案: 为什么“使用名称空间标准”被认为是不好的做法? 35个答案 使用std命名空间15个答案 使用 :您将使用它 命名空间 :使用什么? 一个命名空间 std : std命名空间(声明了C ++标准库的特性,例如string或vector )。 在你编写这条指令后,如果编译器看到string它就会知道你可能指的是std::string ,如果它看到了vector ,它会知道你可能指的是std::vector 。 (当然,您已经在编译单