Создание std :: vector неподвижного типа

В Asp.net для предотвращения пересылки страницы при нажатии кнопки используйте функцию preventDefault ()

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>WebForm1</title>
        <script src="js/jquery-2.2.2.js" type="text/javascript"></script>
        <script>
            $(document).ready(function () {
                $("#btnshow").click(function (e) {
                    e.preventDefault();
                    $("#Label1").show();
                });
                $("#btnhide").click(function (e) {
                    e.preventDefault();
                    $("#Label1").hide();
                })
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>

        </div>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <asp:Button ID="btnshow" runat="server" Text="Show" />
            <asp:Button ID="btnhide" runat="server" Text="Hide" />
        </form>


    </body>
    </html>
1
задан NathanOliver 1 March 2019 в 22:25
поделиться

2 ответа

Если вы хотите, чтобы элементы были смежными, вы можете использовать старую добрую 2-кратную динамическую конструкцию массива:

// allocate a dynamic array
NonMoveable *mv = std::allocator<NonMoveable>().allocate(args.size());

// use inplace new to construct the NonMoveable elements
for (unsigned int i = 0; i < args.size(); i++) {
    new(mv + i) NonMoveable(args[i], additional_arg);
}

...  // use the dynamic array

// Explicitely delete the elements
for (unsigned int i = 0; i < args.size(); i++) {
    mv[i].~NonMoveable();
}

// and de-allocate
std::allocator<NonMoveable>().deallocate(mv, args.size());

Это скорее C-ish, но удовлетворяет смежным требованиям. Конечно, это должно быть заключено в специальный контейнер, чтобы обеспечить автоматическое уничтожение и удаление при уничтожении контейнера.

0
ответ дан Serge Ballesta 1 March 2019 в 22:25
поделиться

Вы можете:

  • иметь vector<unique_ptr<T>> или vector<optional<T>> или vector<some_other_defer_storage_mechanism<T>> вместо просто vector<T> - это все типы упаковщиков, которые добавляют некоторую функциональность T, не затрагивая [ 115] (unique_ptr<T> делает его подвижным, optional<T> обеспечивает построение по умолчанию, поэтому вы можете построить с правильным размером, затем emplace() в пределах optional и т. Д.)
  • Использовать deque<T>, который не требует подвижности для emplace_back (хотя вы теряете смежность)
  • Напишите свой собственный динамический массив, который примерно эквивалентен pair<unique_ptr<T[]>, size_t>, который просто выделяет пространство для n T с, а затем размещает новости на каждый из них, гарантируя, что разрушение делает правильные вещи. Это не так уж плохо для реализации - так как вы не будете изменять размер, вам нужно поддерживать минимальное количество общих операций.

Какой из этих ответов самый лучший, действительно зависит.

0
ответ дан Barry 1 March 2019 в 22:25
поделиться
Другие вопросы по тегам:

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