auto_ptr для массивов

Я сомневаюсь, что профилировщик, который поставляется с Visual Studio Team System, является лучшим профилировщиком, но я обнаружил, что он достаточно хорош во многих случаях. Что конкретно вам нужно помимо того, что предлагает VS?

РЕДАКТИРОВАТЬ: К сожалению, это доступно только в VS Team System, но если у вас есть доступ к нему, стоит проверить.

32
задан jww 22 September 2015 в 20:58
поделиться

4 ответа

Use

std::vector<BYTE> buffer(cbType);
pType = (WM_MEDIA_TYPE*)&buffer[0];

or since C++11

std::vector<BYTE> buffer(cbType);
pType = (WM_MEDIA_TYPE*)buffer.data();

instead.


Additional: Если кто-то спрашивает, гарантированно ли векторов будут смежными , ответ будет Да со стандарта C ++ 03. Существует еще один поток , который уже обсуждал это.


Если C ++ 11 поддерживается вашим компилятором, unique_ptr может использоваться для массивов.

unique_ptr<BYTE[]> buffer(new BYTE[cbType]);
pType = (WM_MEDIA_TYPE*)buffer.get();
42
ответ дан 27 November 2019 в 20:30
поделиться

Вы можете привязать видимость элемента управления к свойству IsChecked RadioButton, используя BooleanToVisibilityConverter :

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <BooleanToVisibilityConverter x:Key="convVisibility"/>
  </Page.Resources>
  <Grid>
    <StackPanel Orientation="Vertical">
      <RadioButton Name="radioButton1" GroupName="group1">Control1</RadioButton>
      <RadioButton Name="radioButton2" GroupName="group1">Control2</RadioButton>
      <RadioButton Name="radioButton3" GroupName="group1">Control3</RadioButton>
      <Grid>
        <Button Visibility="{Binding IsChecked, ElementName=radioButton1, Converter={StaticResource convVisibility}}">1. Button</Button>
        <TextBlock Visibility="{Binding IsChecked, ElementName=radioButton2, Converter={StaticResource convVisibility}}">2. TextBlock</TextBlock>
        <TextBox Visibility="{Binding IsChecked, ElementName=radioButton3, Converter={StaticResource convVisibility}}">3. TextBox</TextBox>
      </Grid>
    </StackPanel>
  </Grid>
</Page>

EDIT:

Это решение отлично работает, и это прост в реализации. Есть ли способ предотвратить скрытие элементов управления в режиме дизайна?

Я не знаю о других дизайнерах (например, Blend), но в дизайнере Visual Studio элементы управления никогда не скрываются ...

В любом случае , вы можете реализовать свой собственный конвертер, который всегда будет возвращать Visible в режиме разработки. По какой-то непонятной причине класс BooleanToVisibilityConverter запечатан, поэтому вы не можете наследовать от него. Вместо этого вы можете делегировать преобразование BooleanToVisibilityConverter, если не хотите переписывать логику преобразования:

10
ответ дан 27 November 2019 в 20:30
поделиться

Нет в STL. У Boost есть несколько умных указателей с похожей идеей. Обратите внимание на scoped_array и shared_array

3
ответ дан 27 November 2019 в 20:30
поделиться

Для этого нет ничего в текущей библиотеке std. Однако будущий стандарт C ++ 0x имеет unique_ptr, который заменяет auto_ptr и работает с массивами.

Первую реализацию можно найти здесь: unique_ptr

9
ответ дан 27 November 2019 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: