- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不了解 C++ 11 中的 allocator_traits,所以我尝试了 allocator_traits exmple来自 cplusplus 网站。但是,此代码无法在 gcc 4.9、VS 2015 中编译,甚至无法在其自己的网站中编译。
此外,我也不明白为什么我在这个例子中看不到任何 allocator_traits 语法。我只能看到这个例子构建了一个自定义分配器,然后在 vector 中使用分配器。与 allocator_traits 无关。
谁能帮帮我?
// custom allocator example
#include <cstddef>
#include <iostream>
#include <memory>
#include <vector>
template <class T>
struct custom_allocator {
typedef T value_type;
custom_allocator() noexcept {}
template <class U> custom_allocator (const custom_allocator<U>&) noexcept {}
T* allocate (std::size_t n) { return static_cast<T*>(::new(n*sizeof(T))); }
void deallocate (T* p, std::size_t n) { ::delete(p); }
};
template <class T, class U>
constexpr bool operator== (const custom_allocator<T>&, const custom_allocator<U>&) noexcept
{return true;}
template <class T, class U>
constexpr bool operator!= (const custom_allocator<T>&, const custom_allocator<U>&) noexcept
{return false;}
int main () {
std::vector<int,custom_allocator<int>> foo = {10,20,30};
for (auto x: foo) std::cout << x << " ";
std::cout << '\n';
return 0;
}
cplusplus网站编译错误为:
In member function 'T* custom_allocator<T>::allocate(std::size_t)':
12:74: error: expected type-specifier before ')' token
In instantiation of 'T* custom_allocator<T>::allocate(std::size_t) [with T = int; std::size_t = long unsigned int]':
/usr/include/c++/4.9/bits/alloc_traits.h:357:32: required from 'static std::allocator_traits<_Alloc>::pointer std::allocator_traits<_Alloc>::allocate(_Alloc&, std::allocator_traits<_Alloc>::size_type) [with _Alloc = custom_allocator<int>; std::allocator_traits<_Alloc>::pointer = int*; std::allocator_traits<_Alloc>::size_type = long unsigned int]'
/usr/include/c++/4.9/bits/stl_vector.h:170:46: required from 'std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = int; _Alloc = custom_allocator<int>; std::_Vector_base<_Tp, _Alloc>::pointer = int*; std::size_t = long unsigned int]'
/usr/include/c++/4.9/bits/stl_vector.h:1287:27: required from 'void std::vector<_Tp, _Alloc>::_M_range_initialize(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = const int*; _Tp = int; _Alloc = custom_allocator<int>]'
/usr/include/c++/4.9/bits/stl_vector.h:378:36: required from 'std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = int; _Alloc = custom_allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = custom_allocator<int>]'
25:57: required from here
12:77: warning: no return statement in function returning non-void [-Wreturn-type]
gcc 4.9 报告类似的错误。
VS 2015 也在第 12 行报告错误。消息如下:
Severity Code Description Project File Line Suppression State
Error C2059 syntax error: ')' allocator_traits c:\users\jiang\documents\visual studio 2015\projects\allocator_traits\allocator_traits.cpp 12
最佳答案
将 ::new
替换为 ::operator new
即可。可能是网站上的错字。您在这里调用 operator new
,而不是调用 new
表达式。
关于c++ - 来自 cplusplus 网站的 allocator_traits 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36096472/
我正在尝试用 C++ 实现 bfs。为了做到这一点,我创建了一个名为 closedList 的变量,它应该保留我已经访问过的状态。然而在调试中,当我尝试使用迭代器打印关闭列表中的状态时,它说。 can
我有以下代码: int main() { string input = ""; std::vector board = create_board(); print_board(board); std:
在this page "Pointers and string literals" section网站说 const char * foo = "hello"; 当我们输出 foo 时它会返回字符串文
我正在尝试将一个 csv 文件导入到我的 C++ 程序中,但我遇到了一些问题,希望得到一些说明。 csv 文件中的数据排列如下。如您所见,我要导入 12 个单元格。 x, y, z, p 1, 2,
我是 C++ 的新手,我需要使用 STL 中的 Set,但我在这个概念上苦苦挣扎。 我有一个这样的数组 int my_data[3] 我想创建(不知道这是否可能)一个 set,其中包含 3 个整数的空
最近遇到了下面的代码,看不懂: cplusplus {{ #include "Frame_m.h"` }} cplusplus {{ }} 是什么意思? 最佳答案 OMNet++ 包含一种称为 NED
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭去年。 Improve thi
我不了解 C++ 11 中的 allocator_traits,所以我尝试了 allocator_traits exmple来自 cplusplus 网站。但是,此代码无法在 gcc 4.9、VS 2
在 Emacs v24.5.1 中使用 CPlusPlusMode,我想在键入表达式时自动创建匹配的括号和大括号。 更具体地说,当输入例如“{”时,CPlusPlusMode 应该创建匹配的括号并将光
我通读了很多“学习 C# .Net”的问题,只是想看看是否已经(直接或间接)回答了这个问题。 我主要用 C++ 编程,所以我找到了网站 http://www.cplusplus.com/无价之宝,几乎
我正在使用从 https://github.com/jrk/redis-cplusplus-client check out 的用于 Redis 的 C++ 客户端. 问题是我总是遇到 redis::
cplusplus.com 上给出了一个例子: // read a file into memory #include // std::cout #include // std:
一个简单的问题:有人知道像 cplusplus.com 这样的网站吗? (具有组织良好的函数和标题,包括示例(这对我来说非常重要))并且它是最新的(C++11)。 我问是因为我找不到任何这样的网站。在
如果你能为我澄清一些困惑,我会很高兴。我正在编写一个函数来删除字符串中的重复字符,例如"AB --> "AAABB"。 void remove_dups(std::string& str) {
我正在阅读有关 std::regex_iterator 的文档因为我正在尝试学习如何使用它来解析 HTML 标签。网站给出的例子是 #include #include #include int
我尝试编译并运行来自 http://www.cplusplus.com/reference/future/packaged_task/reset/ 的 reset() 函数示例: $ cat task
当我在 Cplusplus 包装器中使用 android NDK 调用 ffmpeg1.2.1 lib 时,某些符号无法链接,链接时出现以下错误。但是其他符号可以链接,为什么?如何纠正错误? Shar
我是一名优秀的程序员,十分优秀!