계산 시간에 이러한 차이가있는 이유를 다음 코드 (최적화되지 않음)와 함께 설명 할 수 있습니까? 나는 RVO 대 이동 건설을 의심하지만 실제로는 잘 모르겠습니다. 일반적으로 이런 경우에 가장 좋은 방법은 무엇입니까? 비 POD 데이터를 초기화 할 때 루프의 자동 선언은 나쁜 습관으로 간주됩니까? 루프 내부 자동 사용 : std::vector<int> fo
는 : auto n = a.size();
for (auto i = 0; i < n; i++) {
}
문제는 i에 0을 할당하여이 int보다는 size_t 될 것입니다. size_t n = a.size();
for (size_t i = 0; i < n; i++) {
}
나이 : 은 그래서 더 낫다 auto n = a.size();
for (s
VS2010 SP1에서 아래 코드를 컴파일하고 연결하여 Base :: Base (void) 기호를 찾을 수 없다는 링커 오류가 나타납니다. 암시 적 기본 생성자와 같은 것으로 생성되지 않습니다. 다음과 같이 b를 초기화하려면 const Base& b = *d;을 선택하면됩니다. 내가 d를 만들면 Derived*가 작동합니다. 마지막으로 dosomething
내 g ++ 4.4로 컴파일 할 때 -std = C++ 0x를 지정할 수 있으며 이니셜 라이저 목록이 정확합니다. (C++ 98에서는 사용할 수 없지만) auto 키워드를 사용해도 오류가 발생합니다. std::list< std::vector<int> > li2;
li2.push_back({1, 2, 3}); //push_back vector
li2.p
나는 Visual Studio 2010과 SP1을 사용하고 있습니다. 다음 코드는 컴파일러를 충돌시킵니다. template <typename T>
class MyClass
{
public:
typedef int my_int;
const my_int foo();
};
template <typename T>
const auto
로 확장 4.7.2 g++ -std=c++11 test.cc #include <memory>
#include <queue>
struct type{
type(int a) : v(a) {}
int v;
};
typedef std::shared_ptr<type> type_ptr;
int main(){
int value =
GCC 컴파일러를 사용하여 C++ 11 기능을 실험하고 있습니다. 다음 코드가 컴파일되지 않고 왜 그 이유인지 알 수 없습니다. 나는 name의 유형이 초기화 값에서 자동으로 추론 될 것으로 예상하고있었습니다. int main()
{
auto name = "";
cin >> name; // compile error occurs here
C++ 11의 범위 기반 for 루프를 사용하여 문자열에서 모든 공백을 삭제하려고합니다. 그러나 std::out_of_range은 basic_string::erase에 계속 나타납니다. #include <iostream>
#include <string>
#include <typeinfo>
int main(){
std::string str{
나는이 방법 기본적으로 auto var = expr;
에서 자동차를 사용하여 변수를 선언하는 expr의 종류를 복용하고 &/& & -references과 모든 최상위 const와 및 volatileness을 제거 같은 것을 배웠습니다. 위의 내용이 이고 정확히 인 것을 의미합니까? std::remove_cv<std::remove_ref<decltype(