我的问题很简单:std :: vector元素是否保证是连续的?在order word中,我可以使用指向std :: vector的第一个元素的指针作为C数组吗?
如果我的记忆力很好,那么C++标准就没有这样的保证.但是,如果元素不连续,那么std :: vector要求几乎不可能满足它们.
有人可以澄清一下吗?
例:
std::vector<int> values;
// ... fill up values
if( !values.empty() )
{
int *array = &values[0];
for( int i = 0; i < values.size(); ++i )
{
int v = array[i];
// do something with 'v'
}
}
Run Code Online (Sandbox Code Playgroud) 在elisp中,有一个'if'的情况,我希望执行许多不同的事情:
(if condition
(do-something)
(do-something-else)
...)
Run Code Online (Sandbox Code Playgroud)
但是,(do-something-else)仅在else-case中执行.如何指定要执行的指令块?例如:
(if condition
(begin
(do-something)
(do-something-else)
...))
Run Code Online (Sandbox Code Playgroud) 我正在使用Xcode和.xcconfig文件.我试图在预处理器定义中附加一些值,但我根本无法使它工作.
我尝试了以下(以及此的许多变体),但到目前为止没有运气:
GCC_PREPROCESSOR_DEFINITIONS = '$(GCC_PREPROCESSOR_DEFINITIONS) NEW_VALUE'
该NEW_VALUE符号根本不会添加到预处理器定义中.
有没有人成功地将新值附加到xcconfig文件中的变量?
我正在尝试在Emacs中设置一个键绑定到Ctrl + TAB.我用了以下电话:
(global-set-key (read-kbd-macro "C-TAB") 'my-func)
Run Code Online (Sandbox Code Playgroud)
但是,每当我使用它时,我都会得到一个
<C-tab> is undefined
Run Code Online (Sandbox Code Playgroud)
错误信息.尝试将绑定设置为"C-tab"会导致出现错误消息.
如何设置我对C-TAB的绑定?
这个问题一直困扰着我.我一直认为C++应该被设计成使"删除"操作符(没有括号)即使使用"new []"运算符也能工作.
在我看来,写这个:
int* p = new int;
Run Code Online (Sandbox Code Playgroud)
应该相当于分配1个元素的数组:
int* p = new int[1];
Run Code Online (Sandbox Code Playgroud)
如果这是真的,"删除"运算符可能总是删除数组,我们不需要"delete []"运算符.
是否有任何理由在C++中引入"delete []"运算符?我能想到的唯一原因是分配数组的内存占用量很小(你必须在某处存储数组大小),因此区分"delete"与"delete []"是一个很小的内存优化.
我开始注意到我的iPhone应用程序的SQLite查询有一种奇怪的行为.每当我执行"INSERT"语句时,都会在我的db文件旁边创建一个日志文件(确切的文件名是"userdata.db-journal").
如果我正确理解了文档,那么SQLite将使用此日志文件在操作失败时能够回滚.但是操作完成后文件仍保留在那里.
我做了准备,绑定和执行查询的经典步骤(为简单起见,不检查返回值):
sqlite3 *db = NULL;
sqlite3_open( "userdata.db", &db );
sqlite3_stmt *insertStmt = NULL;
const char *query = "INSERT INTO table VALUES(?,?)";
sqlite3_prepare_v2( db, query, -1, &insertStmt, NULL );
sqlite3_bind_int( insertStmt, 1, 0 );
sqlite3_bind_int( insertStmt, 2, 0 );
sqlite3_step( insertStmt );
sqlite3_reset( insertStmt );
sqlite3_clear_bindings( insertStmt );
sqlite3_close( db );
Run Code Online (Sandbox Code Playgroud)
日志文件是在调用'sqlite3_step'函数后创建的,并保持不变直到关闭数据库.我需要做些什么才能让它消失?
安装iPhone SDK 3.1.2后,Interface Builder不再与Xcode同步.XIB窗口底部的指示灯为灰色.IB没有看到Xcode项目中的任何文件.当我开始IB时,Xcode总是打开的.
我试过重启.没运气.
我尝试删除Xcode/IB的首选项文件.没运气.
我尝试重新安装Xcode/IB.仍然没有运气.
本页介绍IB如何监控Xcode中的更改.虽然这是一个有趣的阅读,但它没有提供任何有关如何调查我的问题的帮助.
任何帮助,将不胜感激.
编辑
这里有更多信息.我为launchd启用了调试日志,我注意到每次启动Interface Builder时都会出现以下行:
[0x0-0x1b01b].com.apple.InterfaceBuilder3[315]: Couldn't open shared capabilities memory GSCapabilities (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
这似乎与我的问题有关.
有没有办法编辑Xcode的内置代码片段?有一个编辑按钮,但按下它似乎不允许更改片段的文本.
任何见解都表示赞赏.
有一个开源库,我想用于我的iPhone应用程序.该库是用C语言编写的,并使用Makefile编译.我想使用静态库.
如果我将.a文件添加到我的项目依赖项中,它可以很好地与模拟器一起使用,但是在定位iPhone SDK时它不会链接(当然因为.a文件是为Intel平台编译的).
我应该使用哪些GCC编译器标志来编译iPhone SDK的静态库?我认为'-arch'选项会为我提供一个iPhone架构,但没有运气.
任何帮助,将不胜感激.
我正在使用Xcode 3.2和xcconfig文件.文件按目标组织.例如,我有一个debug.xcconfig文件和一个文件release.xcconfig.两者都使用通用设置,因此我添加了shared.xcconfig两个包含的文件.
该shared.xcconfig文件如下所示:
GCC_C_LANGUAGE_STANDARD = c99
GCC_WARN_ABOUT_RETURN_TYPE = YES
GCC_WARN_UNUSED_VARIABLE = YES
GCC_PREPROCESSOR_DEFINITIONS = SOME_COMMON_DEFINITIONS
Run Code Online (Sandbox Code Playgroud)
该debug.xcconfig文件如下所示:
#include "Shared.xcconfig"
GCC_OPTIMIZATION_LEVEL = 0
Run Code Online (Sandbox Code Playgroud)
现在,我想DEBUG在debug.xcconfig文件中添加预处理器定义.如此问题所示,以下方法应该起作用:
GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG"
Run Code Online (Sandbox Code Playgroud)
这在Xcode 3.2中不起作用.Xcode文档还明确提到修改变量是不可能的,你只能覆盖它们.
你们怎么解决这个问题?